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

时间:2015-03-14 15:02:41

标签: .net many-to-many entity-framework-6 one-to-many ef-fluent-api

我在实体框架中有一个映射挑战。

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

Many-To-Many with Dependents intermediated table

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

One-To-Many entities relation

如何使用Fluent API进行映射?

1 个答案:

答案 0 :(得分:1)

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

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");
            });
    }
}