私は現在、IsActive列がfalseのレコードをフィルタリングするために、EF4で条件付きマッピングを使用しています。これは意図したとおりに動作しますが、私は関係をナビゲートする際に問題にぶつかります。関係上のEF4条件付きマッピング
例として、Storeに多数のインベントリレコードを持たせることができる1対多の関係があります。ストアには、それに属するインベントリレコードと同様にIsActiveとマークすることができます。これらのテーブルのレコードを直接照会することは、意図したとおりに動作します(アクティブなレコードのみが返されます)が、関連付けられたストアがアクティブでないインベントリレコードも取得できます。これにより、非アクティブなストアにアクセスすることができ、ストアがアクティブであるかどうかを検出する方法がありません。
前条件付きマッピングを使用してに切り替えるには、我々は次のようなクエリを使用していた。
Inventories.Where(i => i.IsActive && i.Store.IsActive && i.Product.IsActive && i.Product.Id == productId);
私たちはこれにそのクエリを簡素化することができ期待していた:
Inventories.Where(i => i.Product.Id == productId);
これは」doesnのIsActiveで条件付きマッピングを使用することができないため、StoreまたはProductがアクティブであるかどうかを知る方法がなくなりました。
EF4で条件付きマッピングを利用している間にそのクエリを複製する方法はありますか?条件付きマッピングをこのままにしておくことを余儀なくされたのですが、すべてのクエリが関連するすべてのIsActiveフィールドを確認することを願っていますか?
「条件付きマッピング」とはどういう意味ですか?あなたはTPHについて話していますか?あなたは条件付きのナビゲーションプロパティ/ FKを持つことはできません。 – RPM1984
このテーブルの階層はありません。これに非常に似た何かをしてください:http://blogs.microsoft.co.il/blogs/gilf/archive/2010/06/15/using-conditional-mapping-inentity-framework .aspx –
私の$ 0.02:これはあなたのマッピングではなくあなたのサービス層にあるはずです。 –