如何在实体框架中配置一对多关系以及继承
本文关键字:关系 一对多 继承 配置 实体 框架 | 更新日期: 2023-09-27 17:54:27
我正在研究实体框架代码第一模式。我有一个场景,我有以下实体,
public class Toy
{
public int ID {get; set;}
public string Name {get; set;}
}
对于上述实体,所有的模型构建配置已经完成,并且表已经创建好了。
我们有另一个实体
public class Kid
{
public string Name {get; set;}
}
对于这个实体,所有的模型构建配置都已经完成,并且在数据库中创建了表。
现在我需要维护/配置,孩子和玩具之间的一对多关系,即一个孩子可以有多个玩具
所以我创建了一个自定义类它将继承Kid类public class KidToy : Kid
{
public virtual List<Toy> Toys{get; set;}
}
注意:我不能添加列表玩具属性直接在儿童类,我是出现循环引用错误
builder.Entity<Kid>().Map<KidToy>(m => {
});
builder.Entity<KidToy>().HasMany(b => b.Toys).WithMany().Map(b =>
{
b.MapLeftKey(KidId");
b.MapRightKey("ToyId");
b.ToTable("kidToyMap");
});
我不需要为自定义模型类(KidToy)创建表,我需要配置一对多关系。
use this:
public class Toy
{
public int ID { get; set; }
public string Name { get; set; }
public int KidID { get; set; }
[ForeignKey("KidID")]
[InverseProperty("Toys")]
public virtual Kid Kid { get; set; }
}
public class Kid
{
public string Name { get; set; }
[InverseProperty("Kid")]
public virtual ICollection<Toy> Toys { get; set; }
}