0

それぞれのデータベース オブジェクトにマップされた一連のクラスがあります。

マッピングでは、関連付けられたルックアップが親レコードとともにロードされるように、フェッチ モードが設定されます。

私は今、これらのオブジェクトのいくつかを参照しています。そのため、関連するレコードが熱心にロードされていることは明らかです。

可能であれば、これらのオブジェクトをサービスレイヤーから渡すため、遅延読み込みを使用したくありません-理想的ではありませんが、クエリレベルでこれを処理できることを望んでいます。

次の例を見てください。

var c = s.CreateCriteria(typeof(Transaction))
                        .Add(Restrictions.Eq("Id", myId))
                        .SetFetchMode("Remark", FetchMode.Join)
                        .SetFetchMode("Category", FetchMode.Join)
                        .SetFetchMode("Reason", FetchMode.Join);

var t = c.List<Transaction>().FirstOrDefault();

Remark には多くのレコードが関連付けられています。これらは、このクエリを実行すると現在読み込まれています。

ICriteria を変更して、参照エンティティが関連付けをロードしないようにすることはできますか?

この例では、Transction とそれに直接関連付けられた Remark、Category、Reason のみが必要です

ありがとう

4

1 に答える 1

0

私の頭の上にあるはずです

var c = s.CreateCriteria(typeof(Transaction))
                    .Add(Restrictions.Eq("Id", myId))
                    .CreateAlias("Remark", "remark"))
                    .SetFetchMode("remark.Collection", FetchMode.Lazy);
于 2013-08-28T18:21:40.297 に答える