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);

通过关闭会话然后尝试访问关联的对象,如果对象没有被急切加载,它将引发异常。相反,如果它是 eagrly 加载的,NHibernate 将不会尝试访问数据库,因此不会抛出异常。

于 2009-06-19T11:03:01.370 回答