Как правильно проверить 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);
Если закрыть сеанс, а затем попытаться получить доступ к связанному объекту, если объект загружен не сразу, он выдаст исключение. Conversly, если он загружен ранее, NHibernate не будет пытаться получить доступ к базе данных и не будет выдавать исключение.
Не связан с StackOverflow