我正在开发一个 EF5 Code First 应用程序,到目前为止一切进展顺利,但我遇到了一个障碍,我希望有人能提出解决方案。
基本上,我有一个基类和一些派生类,我想知道如何处理它们的映射。这是一个可笑的简化示例:
[Table("Person")]
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
}
[Table("EmployeePerson")]
public class EmployeePerson : Person
{
public int HoursWorked { get; set; }
}
[Table("CustomerPerson")]
public class CustomerPerson : Person
{
public int DollarsSpent { get; set; }
}
到目前为止,这是一个典型的 Table-per-Type 场景,除了基类不是抽象的障碍——可能有一个Person
who 不是 anEmployeePerson
或一个CustomerPerson
. 我在让 EF 接受这一点时遇到了一些麻烦,当我尝试按 ID 加载这样的实体时,EF 生成的丑陋查询不返回任何行。
以前有没有人实施过这样的事情?TPT 风格的映射是否总是要求基类是抽象的?我还没有找到任何相反的例子,但也没有真正的证实。如果必须,我可以想到一些我可以使用的丑陋的解决方法,但如果有的话,我更喜欢更优雅的解决方案。
(另一个障碍:我正在使用第三方数据库,因此我无法对架构进行任何更改。)
谢谢!