NHibernate急于在复杂对象图上使用Queryover API加载

问题描述

| 我有一个非常复杂的对象图,我想一次加载 猛扑 样本的Daylog具有Daylog测试,Daylog测试具有Daylog 结果 Daylog测试具有Testkey,Daylog结果具有Resultkey,以及 TestKeys有结果键。 我正在使用QueryOver API和Future将它们全部作为一个查询运行, 以及NHibernate实例化整个数据所需的所有数据 NHProf已验证,正在返回图形IS。
                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之间 这种关系。 我认为整个查询可能代表着一个穷人 了解QueryOver API,因此我希望获得所有建议 关于它,但是首先,我想了解为什么我得到了代理而不是 结果列表,稍后我尝试获取时 daylogresult.resultkey.testkey.results。 有什么帮助吗?     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)