私は完全に困惑している奇妙な問題を抱えています。
残念ながら、私は多くの関係を持つドメイン オブジェクトを持っています (これを変更することはできません) 本質的に、クエリを構築し、熱心なフェッチを追加するだけで、特定の量を追加した後、構築時間が大幅に増加します最終的にビジュアルスタジオがフリーズしてクラッシュするまで。クエリは非常に単純で、次のようになります。
var query = QueryOver<DomainObject>
.Fetch(x => x.Property).Eager
.Fetch(x => x.Property.PropertyA).Eager
.Fetch(x => x.Property.PropertyB).Eager
.Fetch(x => x.Property.PropertyC).Eager
.Fetch(x => x.Property.PropertyD.SubProp).Eager
.Fetch(x => x.Property.PropertyE).Eager
.Fetch(x => x.Property.PropertyF.SubProp).Eager
.Fetch(x => x.Property.PropertyG).Eager
.Fetch(x => x.Property.PropertyH.SubProp).Eager
.Fetch(x => x.Property.PropertyI).Eager
.Fetch(x => x.Property.PropertyJ).Eager
.Fetch(x => x.Property.PropertyK).Eager
.Fetch(x => x.Property.PropertyL).Eager
.Fetch(x => x.Property.PropertyM).Eager
.Fetch(x => x.Property.PropertyN).Eager
.Fetch(x => x.Property.PropertyO).Eager
.Fetch(x => x.Property.PropertyP).Eager
.Where(x => x.Id == 5);
//My fingers got tired there are in reality 33 fetches, 29 involve x.Property
query.Clone()
.Fetch(x => x.Property.PropertyN.ListProperty).Eager
.Future();
query.Clone()
.Fetch(x => x.PropertyO.ListProperty).Eager
.Future();
query.Clone()
.Fetch(x => x.PropertyD.ListProperty).Eager
.Future();
query.Clone()
.Fetch(x => x.PropertyH.ListProperty).Eager
.Future();
var results = query.Future().ToList();
これは本質的に、私たちが見ている疑似クエリです.フェッチのセクションをコメントアウトすると、一度に1つのフェッチのコメントを外すと、ビルド時間が長くなり、最終的にVisual Studioがロックアップし、最終的にはビルド時間が長くなります.構築を完了することはありません。
誰もこれについて何か手がかりを持っていますか? 私はインターネットを検索しようとしましたが、関連する情報を見つけることができませんでした。現時点では、遅延読み込みが唯一の選択肢のようです。しかし、私はこれに対する答えが本当に好きです。