首页 > 解决方案 > 从另一个表引用子表?

问题描述

所以我在EntityFramework 6中使用TPT(每个类型的表)来创建一个表层次结构,假设是这样的:

public class Model
{
    public int Id { get; set; }
    public int CommonProperty { get; set; } 
} 

public class ModelA: Model
{
    public string PropertyA { get; set; }
}

public class ModelB: Model
{
    public int PropertyB { get; set; }
}

现在,我需要从自身引用表 ModelA,以便它包含对相同类型实体的引用,如下所示:

public class ModelA: Model
{
    public string PropertyA { get; set; }

    public int ModelAId { get; set;

    public ModelA ModelA;
}

现在,这个引用显然是指 Model 表而不是 ModelA,因为从技术上讲,这个引用没有它自己的 Id。

我怎样才能做到这一点?

我一直在考虑添加一个名为 ModelAId 的新内部 int 并参考那个,但我不知道是否有更好的解决方案。

标签: c#sql-serverdatabaseentity-frameworkdatabase-design

解决方案


现在,这个引用显然是指 Model 表而不是 ModelA,因为从技术上讲,这个引用没有它自己的 Id。

您忘记了(至少根据您给定的示例代码)因为 ModelA 继承自 Model,它现在也有自己的 Id 和 CommonProperty 属性。


推荐阅读