2011-07-13 13 views
2

私たちは、レガシーデータベースを使用したプロジェクトでFluent NHibernate LINQを使用しています。 このシナリオでは、住所を持つ顧客情報の表があります。 C#で個別のエンティティとしてCustomerとAddressを作成しました。住所は再び郵便番号オブジェクトを参照します。Fluent NHibernate Linq複合コンポーネントEager Loading

マッピング中に、顧客のコンポーネントとしてアドレスをマッピングしました。今度は、N + 1の選択を避けるために顧客をフェッチしている間に、賢明なロード郵便番号(Addressによって参照される)を送りたいと思います。

私がFetch(customer => customer.Address.ZipCode)と書くと、それはあまりにも複雑です。 AddressはCustomerと同じテーブルに格納されているため、Fetch(customer => customer.Address).ThenFetch(address => address.ZipCode)はできません。

この問題を解決する方法はありますか?

答えて

2

残念ながら、Linqプロバイダはこの状況を処理できません。あなたは、基準またはQueryOverのAPI

session.CreateCriteria<Customer>() 
    .SetFetchMode("Address.ZipCode", FetchMode.Eager) 
    .List(); 

session.QueryOver<Customer>() 
    .Fetch(u => u.Address.ZipCode).Eager 
    .List(); 

またはマッピング

に郵便番号の遅延読み込みを無効を使用するので、どちらか
関連する問題