实体框架一对多TPH映射我用的是类似这样的数据结构,动物的类型是从表:公共类农场}公共虚拟ICollection猪{得到;放;}publicvirtualICollectionCows{get;放;}}publicclassAnimal{publicintId{get;放;}公共intFarmId?{得到;放;}publicvirtualFarmFarm{get;放;}公共字符串名称{得到;放;}}publicclassPig:Animal{}publicclassCow:Animal{}Mapping:this.Map(m=>m.Requires("Type").HasValue((int)AnimalType.Pig));this.Map(m=>m.Requires("Type").HasValue((int)AnimalType.Cow));但是我好像画不出猪,牛和农场的关系。我从FarmMap尝试了这个,它给出了一个重复的列映射错误:this.HasMany(t=>t.Pigs).WithOptional(t=>t.Farm).Map(m=>m.MapKey("FarmId"));this.HasMany(t=>t.Cows).WithOptional(t=>t.Farm).Map(m=>m.MapKey("FarmId"));来自每只动物的映射也是有效的,它会产生额外的列(例如,Farm_Id和Farm_Id1-除了FarmId-每个动物类型一个)。this.HasOptional(t=>t.Farm).WithMany(t=>t.Pigs).HasForeignKey(d=>d.FarmId)将导航属性从Animal模型移动到继承模型会产生一个额外的列–FarmId1(因此比上面的2更接近我想要的!)有没有办法实现这一目标?我不是EF专家,但是从模型优先的方法我知道这会被映射为Animals的集合,然后你可以选择Farm.Animals.OfType()以上就是C#学习分享的全部内容教程:实体框架一对多TPH映射,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
