c# - 为什么 nhibernate LINQ 不支持简单的外部连接(给定外部连接表上的 where 子句)?

标签 c# sql-server linq nhibernate

我有tableAtableB

tableA 有一个 B_Id 属性。

这个查询工作正常:

 IEnumerable<A> a = Session.Query<A>().Fetch(r=>r.B);

但我想要这样的东西:

 IEnumerable<A> a = Session.Query<A>().Where(r=>r.B.Active).Fetch(r=>r.B);

似乎当我这样做时,它不再进行简单的外部连接,如果表 B 中没有事件记录,我将得不到任何结果。

我想做一个纯外连接,它仍然会给我结果,但 A 实体的 B 属性为 null。

nhibernate LINQ 是否支持这种在外连接表上放置 where 子句的能力?

最佳答案

根据 this post on the nhusers group它显然不受支持,您必须使用 HQL。

至于为什么,我推测作者计划添加它但有更高的优先级。就我个人而言,我将其视为一项关键功能。

关于c# - 为什么 nhibernate LINQ 不支持简单的外部连接(给定外部连接表上的 where 子句)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4588353/

相关文章:

c# - 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

c# - 如何确定CSV文件是否为unicode

sql-server - 添加带主键的链接表的 VBA 代码

java - Spring 数据源连接到 MS SQL Server 命名实例

c# - 如何在 LINQ 中编写 "Not In"SQL 查询?

c# - Linq 获取句子中的单词

c# - 占位符和正则表达式

c# - 使用 OPENJSON 将两个数组的对象插入 SQL 数据库

linq - 在 linq 查询中有条件 count()

c# - 使用 WebClient 从 SharePoint Online 下载文件