私は、HasManyエンティティBとエンティティCを持つエンティティAを持っています。すべてのエンティティA、B、およびCには、熱心にロードする必要があるいくつかの参照x、y、およびzがあります。
データベースからすべてのエンティティAを読み取り、基準APIを使用してBとCのコレクションを熱心にロードしたいと思います。これまでのところ、「A」の参照を熱心に取得することができます。ただし、コレクションが読み込まれると、コレクション内の参照が遅延して読み込まれます。
これが私のやり方です
AllEntities_A =
_session.CreateCriteria(typeof(A))
.SetFetchMode("x", FetchMode.Eager)
.SetFetchMode("y", FetchMode.Eager)
.List<A>().AsQueryable();
Fluentを使用したエンティティAのマッピングは次のとおりです。_Bと_Cは、それぞれAのBとCのプライベートIListです。
Id(c => c.SystemId);
Version(c => c.Version);
References(c => c.x).Cascade.All();
References(c => c.y).Cascade.All();
HasMany<B>(Reveal.Property<A>("_B"))
.AsBag()
.Cascade.AllDeleteOrphan()
.Not.LazyLoad()
.Inverse()
.Cache.ReadWrite().IncludeAll();
HasMany<C>(Reveal.Property<A>("_C"))
.AsBag()
.Cascade.AllDeleteOrphan()
.LazyLoad()
.Inverse()
.Cache.ReadWrite().IncludeAll();
マッピングファイルに変更を加えたくないので、エンティティA全体を熱心にロードしたいと思います。つまり、参照プロパティも熱心にロードされるBとCのリストがあるAのリストを取得する必要があります