NHibernate FetchMode.Eagerを適切にテストするにはどうすればよいですか?
-
06-07-2019 - |
質問
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はデータベースにアクセスしようとしないため、例外をスローしません。
所属していません StackOverflow