【问题标题】: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 中找到一个实现