2

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

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

多对多与从属中间表

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

一对多实体关系

如何使用 Fluent API 映射它?

4

1 回答 1

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");
            });
    }
}
于 2015-03-16T18:58:15.920 回答