Entity framework core 如何与EF Core的最新夜间版本建立多对多关系?

Entity framework core 如何与EF Core的最新夜间版本建立多对多关系?,entity-framework-core,Entity Framework Core,如何使用Fluent API在EF7 EF Core中的两个表之间创建多对多关系?例如,假设您有以下表格: 如何利用DbContext类中的modelBuilder来定义这样的关系 我已经看到了EF团队会议记录中关于这个主题的链接,但这是去年的链接,我想知道在EF7 EF Core中是否有关于如何处理这个问题的新信息 我能够在照片和照片人物以及人物和照片人物之间建立一对多的关系。数据库是按我所希望的方式生成的,但是人和照片之间的导航现在需要与中间实体进行交互。我希望避免这种情况。这是由跟踪的。

如何使用Fluent API在EF7 EF Core中的两个表之间创建多对多关系?例如,假设您有以下表格:

如何利用DbContext类中的modelBuilder来定义这样的关系

我已经看到了EF团队会议记录中关于这个主题的链接,但这是去年的链接,我想知道在EF7 EF Core中是否有关于如何处理这个问题的新信息

我能够在照片和照片人物以及人物和照片人物之间建立一对多的关系。数据库是按我所希望的方式生成的,但是人和照片之间的导航现在需要与中间实体进行交互。我希望避免这种情况。

这是由跟踪的。解决方法是将联接表映射到实体:

班级照片
{
公共int Id{get;set;}
公共i收集个人照片{get;set;}
}
班级个人照片
{
公共int PhotoId{get;set;}
公共照片照片{get;set;}
公共int PersonId{get;set;}
公众人物{get;set;}
}
班主任
{
公共int Id{get;set;}
公共i收集个人照片{get;set;}
}
确保使用复合键配置
PersonPhoto

模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasKey(x=>new{x.PhotoId,x.PersonId});
}
要导航,请使用选择按钮:

//个人照片
var photos=person.PersonPhotos.Select(c=>c.Photo);

当我尝试运行迁移时,会显示:Microsoft.Data.Entity.Metadata.ModelItemNotFoundException:实体类型“PersonPhoto”需要定义一个密钥。因此,我在代码中给出了注释。使用
modelBuilder.Entity().Key(x=>new{x.PhotoId,x.PersonId})配置它哦。伟大的谢谢你。对不起,没有注意。谢谢。@bricelam,我在Asp.Net 5中遇到了一些问题,在尝试这种方法时,遵循您的exmaple,显然,如果我尝试返回一个人的JSON和她的照片,我没有得到任何响应,因为它在Person和PersonPhotos集合之间始终处于引用循环中,有什么办法可以解决这个问题吗?@seanbun我相信这个方法被重命名为
HasKey
(以匹配EF6)