Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何通过代码优先的方法在EntityFramework4.3中实现每种类型的继承表?_Entity Framework_Ef Code First_Table Per Type - Fatal编程技术网

Entity framework 如何通过代码优先的方法在EntityFramework4.3中实现每种类型的继承表?

Entity framework 如何通过代码优先的方法在EntityFramework4.3中实现每种类型的继承表?,entity-framework,ef-code-first,table-per-type,Entity Framework,Ef Code First,Table Per Type,我在代码中有这样的类层次结构: [Table("A")] public class A : IIdentification { public int id { get; set; } } [Table("B")] public class B : A { //some properties here public Aid { get; set;} ForeignKey("Aid"); public A A { get; set; } } [Table(

我在代码中有这样的类层次结构:

[Table("A")]
public class A : IIdentification
{
    public int id { get; set; }
}

[Table("B")]
public class B : A
{
    //some properties here
    public Aid { get; set;}
    ForeignKey("Aid");
    public A A { get; set; }
}

[Table("C")]
public class C : B
{
    //some properties here 
    public Bid { get; set; }
    ForeignKey("Bid");
    public B B { get; set; }
}

[Table("D")]
public class D : C
{
    public Cid { get; set;}
    ForeignKey("Cid");
    public C C { get; set; }
}
如何为每个类或任何其他可能的正确方法创建一个带有外键的表? 也许有人可以发布一些示例如何实现它


也许这是一个微不足道的问题,但我已经花了一整天的时间,实现了主题中描述的许多解决方案,但它仍然不起作用。因此,如果有人能帮助我,我将非常感激。

在映射继承中,除非您想建模另一个关系,否则您没有父实体的可访问导航属性。继承是一种关系,因此B是一种关系,而FK是一种关系


这里您有一个关于TPT继承的问题。

Ladislav,谢谢,我很早就看到了这篇文章,但是现在,在您的回答之后,我一步一步地做了,就像在这篇文章中所说的那样,并得到了相同的错误:对不起,错误地按enter键而不是shift+enter键。。。错误3034:具有不同键的两个实体映射到同一行。确保这两个映射片段不会将具有重叠键的两组实体映射到同一组行。我试图将所有类指定为抽象类,但D除外。删除了所有FK内容,并在Dbset块中写入A、B和C。我需要说的是,在情况B:A中,它工作正常,但当C尝试从B继承,从A继承时,会发生此错误。Ladislav,感谢您的建议和链接。我今天已经更仔细地重新检查了它,并使用最新版本的EF 4.3.1在一个清晰的项目上进行了实施,一切正常!费奥多,你知道是什么问题吗?我也犯了同样的错误。