我們的組織正在尋求在v4推出後對實體框架進行標準化。因此,我正在考慮如何將使用NHibernate進行持久化的應用程序遷移到使用POCO支持的EF4。在幾個地方我們使用單表繼承(也稱爲Table Per Hierarchy)。我一直無法使用以下方式使其工作。實體框架中每個等級繼承POCO實體的表4
付款(基類[應該是抽象的,但有問題存在,以及]) 類:CreditCardPayment(具體實現) ACHPayment(具體實現) CheckPayment(具體實現)
現在,我與它們映射只有基類的屬性。所有這些類都在同一個命名空間中。他們在數據庫中有一個叫做PaymentTypeId的鑑別器,所以Payment映射的條件是「When PaymentTypeId = 0」。每個子類具有不同值的相同條件(即CreditCardPayment = 1等)。
當我嘗試加載每一個使用DataContext.Payments.ToList()(DataContext的從ObjectContext的繼承),我收到以下異常的所有款項的清單:
「對象映射不能用於類型發現身份'DataLayer.DataModel.CreditCardPayment'。「
我不明白這是什麼意思,因爲POCO CreditCardPayment類與POCO Payment類所在的命名空間相同(實際上在同一個文件中)。
我錯過了什麼?
謝謝亞歷克斯。在我的DataContext類的構造函數中,我添加了「this.MetadataWorkspace.LoadFromAssembly(typeof(CreditorCardPayment).Assembly);」到「_payments = CreateObjectSet();」但「類型...無法找到對象映射」錯誤依然存在。這些是POCO類(付款和CreditorCardPayment),這是否改變了這裏需要做的事情 –
SteveBering
2009-12-07 14:40:07