Linq para NHibernate y buscar el modo de carga ansiosa
-
06-07-2019 - |
Pregunta
¿Hay alguna manera de configurar el modo fetch para que esté ansioso por más de un objeto usando linq para nhibernate? Parece que hay un método de expansión que solo me permite establecer un objeto. Sin embargo, necesito configurarlo para más de un objeto. es posible? Gracias
Solución
solo úsalo más de una vez.
IList<Entity> GetDataFromDatabase()
{
var query = session.Linq<Entity>();
query.Expand("Property1");
query.Expand("Property2");
return query.ToList();
}
Otros consejos
El nuevo proveedor de Linq lo hace un poco diferente:
var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();
Más aquí: http://mikehadlow.blogspot.com/2010/08/nhibernate -linq-eager-fetching.html
Hasta donde puedo ver, esto no es equivalente: SetFetchMode hidrata un árbol de objetos y el método Expand recupera un producto cartesiano.
En continuar con la respuesta @Mike Hadlow
, buscar el siguiente nivel (nietos) que debe hacer:
var customers = session.Query<Customer>()
.FetchMany(c => c.Orders)
.ThenFetchMany(o => o.OrderLines).ToList();