从数据库中的多对多映射到域中的一对多

Mapping from many-to-many in database to one-to-many in domain

我在 Entity Framework 中遇到映射挑战。

在数据库中,我在两个 table 之间有一个多对多的关系,中间 table 与两者的 PK 如下:

我需要将此关系映射到一对多域实体关系,如下所示:

我如何使用 Fluent API 映射它?

您可以使用导航 属性 并在模型中设置从属 table:

public class Title
{
    public int Id { get; set; }

    public string Name { get; set; }

    public virtual ICollection<Person> Dependents { get; set; }
}

public class Person
{
    public int Id { get; set; }

    public string Name { get; set; }
}

public class MyContext : DbContext
{
    public DbSet<Title> Titles { get; set; }
    public DbSet<Person> People { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Title>()
            .HasMany<Person>(t => t.Dependents)
            .WithMany()
            .Map(d =>
            {
                d.MapLeftKey("Title_Id");
                d.MapRightKey("Person_Id");
                d.ToTable("Dependents");
            });
    }
}