从数据库中的多对多映射到域中的一对多
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");
});
}
}
我在 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");
});
}
}