【问题标题】:How can i add DbContext to entity with composite primary key with Entity Framework如何使用实体框架将 DbContext 添加到具有复合主键的实体
【发布时间】:2017-03-31 17:05:54
【问题描述】:

我是 Entity Framework 7 的新手,我想获得编辑多对多关系表的权限。在 Fluent API 中,我有一些这样的代码:

modelBuilder.Entity<AB>().HasKey(x => new { x.AId, x.BId });
...
public DbSet<AB> ABs { get; set; }

主键是匿名类型。但我希望能够通过主键搜索我的 AB 实体。我可以将匿名 PK 类型更改为特定类型吗?

【问题讨论】:

    标签: c# entity-framework entity-framework-core composite-primary-key


    【解决方案1】:

    我可以将匿名 PK 类型更改为特定类型吗?

    不,你不能。 HasKey 方法所做的是配置您的 PK 的顺序,只是在您的实体中,PK 属性将保持为简单属性,而不是匿名类型。因此,您可以使用Find 方法搜索特定实体,如下所示:

    int aid=1;
    int bid=2;
    // pass the key values in the same order you define in the HasKey method
    var entity= dbcontext.ABs.Find(aid,bid);
    //Or
    var entity= dbcontext.ABs.FirstOrDefault(ab=>ab.AId==aid && ab.BId==bid);
    

    更新

    好吧,现在我读到 Find 方法仍然不受支持,但你可以在这个 post 中找到一个实现

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-05
      • 2014-12-09
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多