gpt4 book ai didi

entity-framework - 具有接口(interface)的 Entity Framework 不起作用 - 处理相同的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 22:34:32 25 4
gpt4 key购买 nike

我正在使用 Entity Framework并希望将 TPH 与接口(interface)一起使用。所以我创建了一个接口(interface)“ICustomer”,它映射到“SimpleCustomer”和“DiscountedCustomer”类,如下所示。以下是模型构建器代码。据我了解,我们不能将接口(interface)与 Entity Framework 一起使用,那么最好的方法是什么?

 modelBuilder.Entity<ICustomer>().ToTable("tblCustomer")
.Map<SimpleCustomer>(x => x.Requires("CustomerType").HasValue("S"))
.Map<DiscountedCustomer>(x => x.Requires("CustomerType").HasValue("D"));

我的应用程序在整个 UI 中都使用了接口(interface),并且希望对 Entity Framework 进行平滑的类型转换。那么最好的方法是什么?

最佳答案

Entity Framework 不支持带有接口(interface)的 TPH(很抱歉说的很明显)。这可能不是您正在寻找的解决方案,但我仍然会将它放在那里,因为它似乎是截至 2015 年 4 月 16 日的唯一解决方案。

在 Entity Framework 6 中,您可以获得的最接近的是 - 使用抽象类而不是接口(interface)。 这个 article 非常详细地讨论了EF中的TPH。

我的建议是,如果您想使用接口(interface)并维护层次结构,并且还想要平滑的类型转换,考虑使用 automapper与抽象类。 这样,您的 UI 仍将使用接口(interface),但可以使用自动映射器配置文件映射到域模型。至少在接口(interface)支持到来之前。如果应用程序很大并且有数百个领域模型,这将不会很快,因此需要明智地进行规划。

如果您从头开始创建它,您可以简单地使用从 UI 层到 DAL 的抽象类,而无需任何重构。

关于entity-framework - 具有接口(interface)的 Entity Framework 不起作用 - 处理相同的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29482659/

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