如何将DbContext添加到具有实体框架的复合主键的实体

时间:2016-04-13 17:59:31

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

我是Entity Framework 7的新手,我希望能够访问编辑多对多关系表。在Fluent API中,我有一些代码如下:

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

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

1 个答案:

答案 0 :(得分:0)

  

我可以将匿名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

中找到一个实现