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

.net 从数据库中的多对多映射到域中的一对多,.net,many-to-many,entity-framework-6,one-to-many,ef-fluent-api,.net,Many To Many,Entity Framework 6,One To Many,Ef Fluent Api,我在实体框架中有一个映射挑战 在数据库中,两个表之间存在多对多关系,中间表的PK如下: 我需要将此关系映射到一对多域实体关系,如下所示: 如何使用Fluent API对此进行映射?您可以使用导航属性并在模型中设置Dependents表: public class Title { public int Id { get; set; } public string Name { get; set; } public virtual ICollection<Per

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

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

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


如何使用Fluent API对此进行映射?

您可以使用导航属性并在模型中设置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");
            });
    }
}
公共类标题
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection依赖项{get;set;}
}
公共阶层人士
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共类MyContext:DbContext
{
公共数据库集标题{get;set;}
公共数据库集人物{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Entity()
.HasMany(t=>t.Dependents)
.有很多
.Map(d=>
{
d、 MapLeftKey(“标题Id”);
d、 MapRightKey(“个人识别码”);
d、 托塔表(“受抚养人”);
});
}
}

是否需要使用一个导航属性将其映射为一对多或多对多?您不能将其映射为一对多,因为这需要一个直接外键。我需要映射到一对多,我不能仅为了有一个外键而添加属性…谢谢!一切正常。