4

ツリーをロードしようとすると問題が発生します。これが私の場合です。n レベルのエンティティ (階層型) が関連付けられています。問題は、ICriteria または HQL を使用してツリー全体を積極的にロードできるかどうかです。

助けてくれてありがとう。アリエル

4

1 に答える 1

1

はい...正しいfetchmodeを設定するだけです。


すぐに例を含めます。


ここからの例=>

IList cats = sess.CreateCriteria(typeof(Cat))
    .Add( Expression.Like("Name", "Fritz%") )
    .SetFetchMode("Mate", FetchMode.Eager)
    .SetFetchMode("Kittens", FetchMode.Eager)
    .List();

子の子も熱心にロードするように指定できます =>

.SetFetchMode("Kittens.BornOn", FetchMode.Eager)

Linq to NHibernate を使用している場合は、Expand メソッドを使用します =>

var feedItemQuery = from ad in session.Linq<FeedItem>().Expand("Ads")
                           where ad.Id == Id
                           select ad;

そして、ラムダ式で渡された文字列を作成するヘルパー メソッドを使用することをお勧めします。


ツリー全体をロードするように Criteria に指示できる可能性が非常に高いです。しかし、私はそれについて気づいていません。必要なものを正確に指定することを好みます(すべてをロードするのは危険に思えます)。


これは役に立ちますか?

于 2010-01-30T12:34:59.343 に答える