NHibernate FetchMode.Eagerを適切にテストするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1015001

質問

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

コード:

public MyObject GetEager(string name)
{
    return Session
        .CreateCriteria(typeof(MyObject))
        .SetFetchMode("MySubObject", FetchMode.Eager)
        .Add(Restrictions.Eq("Name", name))
        .UniqueResult<MyObject>();
}
役に立ちましたか?

解決

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

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

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top