我想实体框架6代码优先实施TPH继承,并从我的继承类型的关系有问题。实体框架继承和关系
我的代码是
public abstract class Base...
public class Inherited1 : Base
{
public virtual Type1 Rel { get; set; }
...
public class Inherited2 : Base
{
public virtual Type1 Rel {get;set;}
...
所以继承类型具有 “相同” 的关系。继承本身工作正常,但我遇到的问题是与表Type1的关系将被添加两次(逻辑...),而另一个关系是从Inherited2.Id到Type1.Id而不是Inherited2.Type1Id Type1.Id第一个关系是(正确)。
我不确定我是否有意义地解释了这一点,并用部分代码示例改变了类型名称,但我希望你明白了。如果您需要任何更多的细节,请询问。
我大概可以用
UPDATE
我创建了一个示例GitHub库来演示这个问题正确地实现这一点。随时告诉我我做错了什么。 https://github.com/antsim/EntityFrameworkTester
你在用什么?流利的API或注释?在这两种情况下,显示一些你正在使用的代码 – Monah
与这些关系相关的唯一流畅API是 modelBuilder.Entity() .HasMany(x => x.Inherited1) .WithRequired(x => x。 Type1) .WillCascadeOnDelete(); –
我在下面的答案中加入了TPT和TPH两种情况供您参考 – Monah