Как правильно проверить NHibernate FetchMode.Eager? - PullRequest
1 голос
/ 19 июня 2009

Можно ли написать интеграционный тест для проверки правильности работы FetchMode.Eager? Я хочу убедиться, что он не попадает в базу данных при получении MySubObject.

код:

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

Ответы [ 2 ]

3 голосов
/ 19 июня 2009

Вы также можете использовать NHibernateUtil.IsInitialized ... как описано в этом посте

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

1 голос
/ 19 июня 2009

Как насчет чего-то подобного;

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

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

...