gpt4 book ai didi

.net - Entity Framework 5 : Table-per-Type mapping with concrete base class

转载 作者:行者123 更新时间:2023-12-01 02:26:29 25 4
gpt4 key购买 nike

我正在开发一个 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谁不是 EmployeePersonCustomerPerson .我在让 EF 接受它时遇到了一些麻烦,当我尝试通过 ID 加载这样的实体时,EF 生成的丑陋查询不返回任何行。

有没有人以前实现过这样的东西? TPT 风格的映射是否总是要求基类是抽象的?我无法找到任何相反的例子,但也没有真正的确认。如果需要,我可以想到一些丑陋的解决方法,但如果有的话,我更喜欢更优雅的解决方案。

(还有一个问题:我正在使用第三方数据库,因此我无法对架构进行任何更改。)

谢谢!

最佳答案

如果您的“丑陋”解决方案是引入抽象基类 PersonBase (或类似)并制作 Person一个空的派生类,我的评论是:做吧!它一点也不难看,因为它留有改变的空间 Person以后不会影响其他派生类。目前,这将困难得多。稍后您必须引入抽象类,这是对现有代码的更大更改。

关于您的问题:我无法使用 EF 5(VS 2012 .Net 4.5)重现该问题。也许在你的真实模型中还有更多的事情发生。

关于.net - Entity Framework 5 : Table-per-Type mapping with concrete base class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com