1

FetchMode.Eager が正しく動作することをテストする統合テストを作成する方法はありますか? MySubObject を取得するときに、データベースに送信されないことを確認したいと考えています。

コード:

public MyObject GetEager(string name)
{
    return Session
        .CreateCriteria(typeof(MyObject))
        .SetFetchMode("MySubObject", FetchMode.Eager)
        .Add(Restrictions.Eq("Name", name))
        .UniqueResult<MyObject>();
}
4

2 に答える 2

3

NHibernateUtil.IsInitializedまた、この投稿で説明されているように ... を使用することもできます

http://nhibernate.info/doc/howto/various/lazy-loading-eager-loading.html

于 2009-06-19T13:49:00.300 に答える
1

このようなものはどうですか;

MyObject testObject = new MyObject();
testObject.GetEager("a name");
testObject.Session.Close();
Assert.AreEqual(testObject.MySubObject.Id, 3425);

オブジェクトが積極的にロードされていない場合、セッションを閉じてから関連付けられたオブジェクトにアクセスしようとすると、例外がスローされます。逆に、負荷が低い場合、NHibernate はデータベースにアクセスしようとしないため、例外はスローされません。

于 2009-06-19T11:03:01.370 に答える