Nhibernate QueryOver 在 Eager Fetch 中使用别名

标签 nhibernate queryover

我试图让 nhibernate 在急切的获取中使用别名。我不确定这可能。

我正在尝试在提取中使用别名(在我的示例中为 bAlias)。

QueryOver<A>() 
.JoinAlias(x => x.B, () => bAlias) 
.JoinAlias(x => x.B, () => bAlias2) 
.Where(() => bAlias2.Surname == "Smith") 
.Fetch(() => bAlias).Eager 
.Fetch(() => bAlias.C).Eager; 

如您所见,提取命令使用 2 个别名,而不是来自 的直接路径。

上面的代码不起作用。有效的代码是

QueryOver<A>() 
.JoinAlias(x => x.B, () => bAlias) 
.JoinAlias(x => x.B, () => bAlias2) 
.Where(() => bAlias2.Surname == "Smith") 
.Fetch(x => x.B).Eager 
.Fetch(x => x.B.C).Eager;

正如您所看到的,Fetch 语句是不同的。

最佳答案

尝试这样的事情:

B b = null;

QueryOver<A>()
   .Fetch(x => x.B).Eager
   .JoinAlias(x => x.B, () => b, JoinType.LeftOuterJoin);

关于Nhibernate QueryOver 在 Eager Fetch 中使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161166/

相关文章:

.net - 最佳的.NET Web开发框架是什么?

Nhibernate Where Exists 查询结束

c# - 对非相关实体进行复杂连接的 nhibernate queryover

queryover - NHibernate 3 - 如何对 id/numeric/int 执行 LIKE

nhibernate - Fluent NHibernate 和 .NET 4 的奇怪覆盖问题

c# - NHibernate Validator 一个值或另一个

.net - 使用 NHibernate 缓存多个数据库的 SessionFactory 和配置

c# - 哪个是更好的 linq 查询? .Where(crit).FirstOrDefault() 或 .Where(someCrit).FirstOrDefault(someOtherCrit)?

Nhibernate QueryOver。 OrderBy 使用字符串属性名称。

NHibernate JoinQueryOver 返回所有子类型条目