C# + Nhibernate Eager Loading Join 不相关的存储库?
Posted
技术标签:
【中文标题】C# + Nhibernate Eager Loading Join 不相关的存储库?【英文标题】:C# + Nhibernate Eager Loading Join of unrelated Repositories? 【发布时间】:2015-04-22 14:43:14 【问题描述】:一直在寻找一种方法来对来自不同 SQL 数据库但在同一物理服务器中的实体进行预加载连接。
对于相关实体(或表),使用 Fetchmany 将 Eager Load 父实体和相关实体
var list = DummyRepository.Queryable()
.FetchMany(nav => nav.RelatedEntity1)
.ToList();
现在,对于不相关的实体,正在做一个 (Lambda/LINQ) 。加入这两个不相关实体的唯一方法是什么?
【问题讨论】:
你的意思是不相关的实体吗? 啊,是的,不相关的实体,不管是否在同一个数据库中 检查您的映射中是否使用了 fetch join。 我重读了我原来的帖子,我已经说过不相关的实体。无论如何,谢谢你,我检查一下我的映射:) 【参考方案1】:我认为在未映射的类中使用 Query
或 QueryOver
API 是不可能的。
我建议使用session.CreateSQLQuery
或session.GetNamedQuery
在SQL 中调用或创建您的查询,然后使用AliasToBeanTransformer
加载的DTO,例如here。
或使用query.AddEntity
将结果加载到您的域实体中,例如here。
【讨论】:
以上是关于C# + Nhibernate Eager Loading Join 不相关的存储库?的主要内容,如果未能解决你的问题,请参考以下文章
NHibernate QueryOver 与 Fetch 产生多个 sql 查询和数据库命中
NHibernate .SelectList() 与 C# 中的 List<string>