私たちの組織は、v4 がリリースされたら、Entity Framework での標準化を目指しています。その結果、永続化のために NHibernate を使用するアプリケーションを、POCO サポートを使用して EF4 に移行するには何が必要かを検討しています。いくつかの場所では、単一テーブルの継承 (Table Per Hierarchy とも呼ばれます) を使用しています。以下を使用して動作させることができませんでした。
Payment (基本クラス [抽象的である必要がありますが、そこにも問題があります]) CreditCardPayment (具体的な実装) ACHPayment (具体的な実装) CheckPayment (具体的な実装)
現在、基本クラスのプロパティのみを使用してそれらをマッピングしています。これらのクラスはすべて同じネームスペースにあります。データベースには PaymentTypeId と呼ばれる識別子があるため、Payment マッピングには「When PaymentTypeId = 0」という条件があります。各サブクラスには、異なる値を持つ同じ条件があります (つまり、CreditCardPayment = 1 など)。
DataContext.Payments.ToList() (DataContext は ObjectContext から継承) を使用してすべての支払いのリストをそれぞれ読み込もうとすると、次の例外が発生します。
「ID 'DataLayer.DataModel.CreditCardPayment' のタイプのオブジェクト マッピングが見つかりませんでした。」
POCO CreditCardPayment クラスは POCO Payment クラスと同じ名前空間 (実際には同じファイル) に存在するため、これが何を意味するのかわかりません。
私は何が欠けていますか?