如何与最新的 EF Core 每晚构建建立多对多关系?

How to create a many to many relationship with latest nightly builds of EF Core?

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

如何利用 DbContext class 中的模型构建器来定义这样的关系?

我从 EF 团队关于这个主题的会议记录中看到 this link,但那是去年的,我想知道 this link 中是否有关于如何处理这个问题的新信息=22=]EF7 EF 核心。

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

这是由 #1368 跟踪的。解决方法是将连接 table 映射到一个实体:

class Photo
{
    public int Id { get; set; }
    public ICollection<PersonPhoto> PersonPhotos{ get; set; }
}

class PersonPhoto
{
    public int PhotoId { get; set; }
    public Photo Photo { get; set; }

    public int PersonId { get; set; }
    public Person Person { get; set; }
}

class Person
{
    public int Id { get; set; }
    public ICollection<PersonPhoto> PersonPhotos{ get; set; }
}

务必使用复合键配置PersonPhoto

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<PersonPhoto>().HasKey(x => new { x.PhotoId, x.PersonId });
}

要导航,请使用 Select:

// person.Photos
var photos = person.PersonPhotos.Select(c => c.Photo);