Вопрос

Можно ли написать интеграционный тест для проверки правильности работы 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);

Если закрыть сеанс, а затем попытаться получить доступ к связанному объекту, если объект загружен не сразу, он выдаст исключение. Conversly, если он загружен ранее, NHibernate не будет пытаться получить доступ к базе данных и не будет выдавать исключение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top