【发布时间】:2023-04-09 20:54:01
【问题描述】:
我们的组织希望在 v4 发布后实现实体框架的标准化。因此,我正在研究如何使用 POCO 支持将使用 NHibernate 进行持久性的应用程序迁移到 EF4。在几个地方,我们使用单表继承(也称为 Table Per Hierarchy)。我无法使用以下方法使其正常工作。
支付(基类[应该是抽象的,但也有问题]) CreditCardPayment(具体实现) ACHPayment(具体实施) CheckPayment(具体实现)
现在,我只使用基类属性映射它们。所有这些类都在同一个命名空间中。他们在数据库中有一个称为 PaymentTypeId 的鉴别器,因此 Payment 映射具有“当 PaymentTypeId = 0”的条件。每个子类的条件相同,但值不同(即 CreditCardPayment = 1 等)。
当我尝试使用 DataContext.Payments.ToList()(DataContext 继承自 ObjectContext)加载所有付款的列表时,我收到以下异常:
“找不到标识为“DataLayer.DataModel.CreditCardPayment”的类型的对象映射。”
我无法弄清楚这意味着什么,因为 POCO CreditCardPayment 类与 POCO Payment 类位于同一个命名空间中(实际上在同一个文件中)。
我错过了什么?
【问题讨论】:
标签: entity-framework poco entity-framework-4 single-table-inheritance