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】:

我认为在未映射的类中使用 QueryQueryOver API 是不可能的。

我建议使用session.CreateSQLQuerysession.GetNamedQuerySQL 中调用或创建您的查询,然后使用AliasToBeanTransformer 加载的DTO,例如here。

或使用query.AddEntity 将结果加载到您的域实体中,例如here。

【讨论】:

以上是关于C# + Nhibernate Eager Loading Join 不相关的存储库?的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate QueryOver 与 Fetch 产生多个 sql 查询和数据库命中

C# nhibernate 多层架构

5000 万条记录中的内存不足 c# nhibernate

NHibernate .SelectList() 与 C# 中的 List<string>

来自表 Y 的关联引用了一个未映射的类:Y - C# NHibernate

问题 Fluent Nhibernate Mapping MySQL Time(6) to C# DateTime