¿Cómo pruebo el NHibernate FetchMode.Eager correctamente?
-
06-07-2019 - |
Pregunta
¿Hay alguna forma de escribir una prueba de integración para probar que FetchMode.Eager funciona correctamente? Quiero verificar que no vaya a la base de datos cuando recupere MySubObject.
El código:
public MyObject GetEager(string name)
{
return Session
.CreateCriteria(typeof(MyObject))
.SetFetchMode("MySubObject", FetchMode.Eager)
.Add(Restrictions.Eq("Name", name))
.UniqueResult<MyObject>();
}
Solución
También puede usar NHibernateUtil.IsInitialized
... como se explica en esta publicación
http://nhibernate.info/doc/howto /various/lazy-loading-eager-loading.html
Otros consejos
¿Qué tal algo como esto?
MyObject testObject = new MyObject();
testObject.GetEager("a name");
testObject.Session.Close();
Assert.AreEqual(testObject.MySubObject.Id, 3425);
Al cerrar la sesión e intentar acceder al objeto asociado si el objeto no se carga con entusiasmo, generará una excepción. Por el contrario, si se carga de forma irregular, NHibernate no intentará acceder a la base de datos y, por lo tanto, no lanzará la excepción.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow