C# 每个具体类型问题的实体框架表

C# 每个具体类型问题的实体框架表,c#,sql,sql-server,entity-framework,C#,Sql,Sql Server,Entity Framework,我正在使用实体框架7和TPC(每个具体类型的表)继承,并试图找出以下场景: 我有一个名为Ad的实体。这个类是基本的和抽象的。Ad的派生类有:CarAd、MotorAd等。。。使用TPC,我能够从派生的实体类创建单独的表,并且EF没有为我的基类创建表(这是正确的行为)。到现在为止,一直都还不错。我还有一个名为Setting的实体,它的外键指向我的baseAd实体。 Ad和设置之间的这种关系打破了每个具体类型结构的表,EF通过组合派生类的所有属性,仅为Ad实体创建一个表,因此有许多可空列-和TPH(

我正在使用实体框架7和TPC(每个具体类型的表)继承,并试图找出以下场景:

我有一个名为Ad的实体。这个类是基本的和抽象的。Ad的派生类有:CarAd、MotorAd等。。。使用TPC,我能够从派生的实体类创建单独的表,并且EF没有为我的基类创建表(这是正确的行为)。到现在为止,一直都还不错。我还有一个名为Setting的实体,它的外键指向我的baseAd实体。 Ad设置之间的这种关系打破了每个具体类型结构的表,EF通过组合派生类的所有属性,仅为Ad实体创建一个表,因此有许多可空列-和TPH(每个层次结构的表)继承发生-不是我想要的结果。如何更改结构以解决此问题


外键应该如何指向两个不同的表?每种类型的表是更好的选择。@Mikey你是对的,但一个丑陋的解决方案是在我的设置类中有两个外键,分别用于CarAd和MotorAd…这就是为什么,我建议每种类型的表(TPT而不是TPC),然后有一个用于Ad的表,只包含Id(目前),但可空列更少;)谢谢@Mikey,我明白你的意思了,我也试过了,但没有成功,但结果是实体框架7中还没有实现TPT,所以TPH是目前唯一可用的选项。外键应该如何指向两个不同的表?每种类型的表是更好的选择。@Mikey你是对的,但一个丑陋的解决方案是在我的设置类中有两个外键,分别用于CarAd和MotorAd…这就是为什么,我建议每种类型的表(TPT而不是TPC),然后有一个用于Ad的表,只包含Id(目前),但可空列更少;)谢谢@Mikey,我明白你的意思了,我也试过了,但没能让它工作,但事实证明TPT还没有在Entity Framework 7中实现,所以TPH是目前唯一可用的选项。