NHibernate Eager Loading с Queryover API на сложном графе объектов

У меня есть довольно сложный граф объектов, который я хочу загрузить сразу swoop.

Образцы имеют дневные журналы, у которых есть дневные журналы, у которых есть дневные журналы. Результаты

У тестов дневного журнала есть тестовые ключи, у результатов дневного журнала есть ключи результатов и У TestKeys есть Resultkeys.

Я использую QueryOver API и Future, чтобы запускать все это как один запрос, и все данные, которые необходимы NHibernate для создания экземпляра всего граф IS возвращается, проверено 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;
                }

Однако я все еще получаю прокси для представления отношения между Testkey и ResultKey, хотя я специально загружаю эти отношения.

Я думаю, что весь этот запрос, вероятно, отражает плохую понимание API QueryOver, поэтому я хотел бы получить любой совет на нем, но прежде всего хотелось бы понять, почему я получаю прокси, а не список результатов, когда позже я попытаюсь получить daylogresult.resultkey.testkey.results.

Есть помощь?

7
задан Endy Tjahjono 4 November 2011 в 03:56
поделиться