我们Entity Framework 6.1
在我们的 MVC 应用程序中使用,使用code-first
和table-per-hierarchy
方法,因为我们是从头开始开发的,我们认为这种方式适合快速开发。但是现在我有一个问题:假设我有一个基类和三个子类,它们看起来像这样:
public class BaseClass
{
public int ID { get; set; }
public string Name { get; set; }
}
public class SubClassOne : BaseClass
{
public double Volume { get; set; }
}
public class SubClassTwo : BaseClass
{
public double Volume { get; set; }
}
public class SubClassThree : BaseClass
{
public int Number { get; set; }
}
使用默认设置时,EF 将为数据库表创建 6 列:ID、Name、Volume、Volume1、Number 和 Discriminator。Volume 列将仅用于 SubClassOne,Volume1 将用于 SubClassTwo,Number 仅用于 SubClassThree。
我不太关心数据库行空间的“浪费”。但是有一件事情困扰着我:如果我是一个新开发人员并且现在正在直接查看数据库,“Volume”和“Volume1”的名称会让我感到困惑。我知道在代码方面有 SubClassOne 和 SubClassTwo,它们都有一个名为“Volume”的属性。但我永远不知道哪个专栏是哪个班级的。所以我的问题是,有什么方法可以指示实体框架(例如,使用属性)两者SubClassOne.Volume
都SubClassTwo.Volume
映射到Volume
数据库中的列。(另一个好处是我减少了一列,但这不是我的主要目标)。
我想如果我不使用实体框架、代码优先或每层次结构表,并自己设计表,尤其是 DAL,我可以完全控制并实现这一点。但是现在呢?