一旦 v4 发布,我们的组织正在寻求对 Entity Framework 进行标准化。因此,我正在研究如何使用 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 类位于同一个命名空间中(实际上在同一个文件中)。
我错过了什么?