Tengo un gráfico de objetos bastante complejo que quiero cargar de una sola vez swoop.NHibernate Eager Cargando con la API Queryover en un gráfico de objetos complejos
muestras tienen Daylogs que tienen Análisis Daylog que tienen Daylog Resultados
Análisis Daylog tener Testkeys, Daylog resultados han Resultkeys, y TestKeys tener Resultkeys.
estoy usando la API QueryOver y futuro para ejecutar estos todo como una consulta, y todos los datos que NHibernate debería necesitar para crear una instancia está siendo devuelto todo el gráfico , verfied por NHProf.
public static IList<Daylog> DatablockLoad(Isession sess,
ICollection<int> ids)
{
var daylogQuery = sess.QueryOver<Daylog>()
.WhereRestrictionOn(dl => dl.DaylogID).IsIn(ids.ToArray())
.Fetch(dl => dl.Tests).Eager
.TransformUsing(Transformers.DistinctRootEntity)
.Future<Daylog>();
sess.QueryOver<DaylogTest>()
.WhereRestrictionOn(dlt =>
dlt.Daylog.DaylogID).IsIn(ids.ToArray())
.Fetch(dlt => dlt.Results).Eager
.Inner.JoinQueryOver<TestKey>(dlt => dlt.TestKey)
.Fetch(dlt => dlt.TestKey).Eager
.Inner.JoinQueryOver<ResultKey>(tk => tk.Results)
.Fetch(dlt => dlt.TestKey.Results).Eager
.Future<DaylogTest>();
sess.QueryOver<DaylogResult>()
.Inner.JoinQueryOver(dlr => dlr.DaylogTest)
.WhereRestrictionOn(dlt =>
dlt.Daylog.DaylogID).IsIn(ids.ToArray())
.Fetch(dlr => dlr.ResultKey).Eager
.Fetch(dlr => dlr.History).Eager
.Future<DaylogResult>();
var daylogs = daylogQuery.ToList();
return daylogs;
}
Sin embargo, aún así terminar con los proxies para representar la relación entre TestKey y ResultKey, a pesar de que estoy específicamente cargar esa relación.
creo que esta consulta es probablemente toda representante de una mala comprensión de la API QueryOver, así que me gustaría cualquiera y todos los consejos en él, pero sobre todo, me gustaría entender por qué me sale un proxy y no una lista de resultados cuando más tarde intento obtener daylogresult.resultkey.testkey.results.
¿Algún ayuda?