新系统,定义了主表,同时定义两个从表:
public class EntityA { public int id { get; set; } } public class EntityB : EntityA { } public class EntityC : EntityA { }
参考代码如上,通过codefirst形成tpt的关系,问题就这样来了:
当在EntityB或EntityC里没有同一个Id的数据时,EntityB和EntityC都是工作正常的,但是,一旦都有数据,就立马报告错误:
不具备从头 EntityC 到EntityB的类型转换(或者反过来)。
估计这问题太难了,后来分析了下EF的原理,嘿嘿,有点背道了。
解决这个问题,可以采用另外的方案:
不使用继承,改A为主表,B、C作为外键表,只进行1<-->0..1的外键关联。