复杂的 nHibernate QueryOver 表达式

2024-02-15

我在层次结构中有以下对象A > B > C > D。每个对象都映射到一个表。我正在尝试使用 QueryOver 编写以下 SQL:

SELECT B
FROM A, B, C, D
WHERE A.ID = B.ID
  AND B.ID = C.ID
  AND C.ID = D.ID
WHERE A.NUMBER = 'VALUE'
  AND D.NAME IN ('VALUE1', 'VALUE2')

到目前为止我有 C# 代码:

string[] entityNames = entityAttributes.Select(e => e.Name).ToArray();
string customerNumber = 2;

return session.QueryOver<B>()
              .JoinQueryOver(b => b.C)
              .JoinQueryOver(c => c.D)
              .WhereRestrictionOn(d => d.Name).IsIn(entityNames)
              .List<B>();

这里缺少的是A > B关联。我不知道如何将连接添加到A将其限制在NUMBER场地。我尝试了以下但是.JoinQueryOver(b => b.C)正在寻找类型A而不是寻找类型B.

return session.QueryOver<B>()
                .JoinQueryOver(b => b.A)
                    .Where(a => a.Number == customerNumber)
              .JoinQueryOver(b => b.C) **//Looks for type A instead of B**
              .JoinQueryOver(c => c.D)
              .WhereRestrictionOn(d => d.Name).IsIn(entityNames)
              .List<B>();

如何添加类型A对此查询同时仍返回类型B?


您可以使用别名来加入您的表,例如

B tB = null;
A tA = null;
C tC = null;
D tD = null;
var qOver = HibSession.QueryOver<B>(() => tB)
.JoinAlias(() => tB.A, () => tA, JoinType.LeftOuterJoin)
.Where(() => tA.Number == customerNumber)
.JoinAlias(() => tB.C, () => tC, JoinType.LeftOuterJoin)
.JoinAlias(() => tC.D, () => tD, JoinType.LeftOuterJoin)
.Where(Restrictions.On(() => tD.Name).IsIn(entityNames))
.List<B>();

我希望它有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复杂的 nHibernate QueryOver 表达式 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • 条件类型定义

    如果我有一小段这样的代码 template
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • C:设置变量范围内所有位的最有效方法

    让我们来int举个例子 int SetBitWithinRange const unsigned from const unsigned to To be implemented SetBitWithinRange应该返回一个int其中所有
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B

随机推荐

  • 加载 ASP.NET 网页时缺少 Underscore.js 的 Javascript“.map”文件 [重复]

    这个问题在这里已经有答案了 我有一个网页 它是在 Azure 上运行的 ASP NET 网站的一部分 目前已经运行良好一段时间了 出乎意料的是 我突然在浏览器尝试下载 Underscore js 的 map 时遇到问题 我做了一些阅读 显然
  • 翻译 date("d F Y (H:i) 函数 php

    我是巴西人 有一个 wordpress 插件使用 date d F Y H i date Output 2013 年 1 月 16 日 00 54 但葡萄牙语应该是 16 Janeiro 2013 00 54 我该如何更改它 PS 我认为日
  • 如何通过 Qt 样式表自定义 Qt 应用程序的标题栏?

    我可以在 Qt 样式表中自定义 Qt 应用程序的控件 但是 我找不到自定义标题栏的方法 我找到了一些解决方案 但这需要修改应用程序本身的代码 无论如何 您是否可以仅使用 Qt 样式表来自定义它 标题栏 http en wikipedia o
  • 避免快速自动链接框架

    我有一个示例项目 https github com Usipov SwiftAutoFrameworksLinkage由一个主要目标 LinkerTests 和一个依赖的动态框架 Dynamic 如果运行该项目 您将看到以下 dyld 二进
  • 通过 angularjs 中的路由进行重定向

    我有以下要求 应显示包含编辑和删除链接的所有项目的列表 当用户单击编辑时 应出现带有文本框和保存按钮的编辑表单 现在 当用户编辑数据并单击保存按钮时 应保存数据 并且列表页面应再次显示修改后的数据 一切正常 但我如何通过 AngularJS
  • SQL Server使用C#执行备份

    我研究了使用 C 通过 SMO 创建数据库备份的可能性 该任务非常简单 代码也很简单 我只有一个问题 如何检查备份是否真正创建 Sql备份 Sql备份 http msdn microsoft com en us library micros
  • 如何在不使用 QtCreator 的情况下将 dll 文件复制到 Qt 中的输出目录?

    我有一个基于 Qt 的应用程序 它使用许多在项目外部构建的 dll 这些 dll 被签入源代码 因为我们不会非常频繁地重建它们 它们需要几个小时才能构建 我不希望它们出现在主项目中 我想在构建完成后将这些 dll 复制到适当的目录 发布 调
  • Powershell 表达式没有给出结果

    我创建了一个应返回 OU 规范名称的表达式 一个小轮廓 Search ADAccount LockedOut UsersOnly Select Object Name SamAccountName Name OU Expression Ge
  • 在 Django 中将变量从模板传递到视图的更有效方法是什么?

    我的问题涉及将变量从模板传递到 Django 中查看 我知道如何在 URL 中以及通过表单传递变量 我遇到的第一个问题是 url 可以被操纵 这不是我想要的 有什么办法可以防止这种情况发生吗 现在这就是我的创可贴
  • 如何编写一个使用 image magick 将图像切成碎片的 bash 脚本?

    我有许多输入图像 其中包含多个较小的图像 所有图像都位于一行中 所有包含的图像尺寸相同 因此 例如 图像input png may be 480x48并包含 1048x48图像 全部排成一排 使用imagemagickconvert工具 或
  • 卸载App后如何删除数据?

    我正在开发一个 Android 应用程序 它在 SD 卡中创建一个文件夹并存储一些图像 我想在卸载应用程序时删除该文件夹 请指导我 简单 不可能 目前 当您自己的应用程序被卸载时 不会触发卸载事件 因此你无法以任何方式对此做出反应 唯一的例
  • jQuery/Ajax 加载的 DOM 脚本何时实际执行?

    好吧 我觉得问这个问题有点愚蠢 类似问题有很多点击 但我似乎无法回答正确 如果我通过 jQuery Ajax 修改 DOM 加载的脚本何时实际解析 执行 下面的代码适用于 F F 但不适用于 Chrome 或 Opera 工作 意味着它执行
  • App Engine 无缓存 JSP

    我想在我的 Google 应用引擎网站上禁用 JSP 文件的缓存 我有这个
  • SIMD 或非 SIMD - 跨平台

    我需要一些想法如何编写一些可并行问题的 C 跨平台实现 以便我可以利用 SIMD SSE SPU 等 如果可用 我希望能够在运行时在 SIMD 和非 SIMD 之间切换 您建议我如何解决这个问题 当然我不想针对所有可能的选项多次实现该问题
  • 如何在java servlet中限制上传速度?

    我正在开发一个应用程序 基于 Spring 作为 DI 和 MVC 框架 该应用程序具有文件上传功能 该功能当前使用 Spring Multipart Upload 实现 反过来又利用公共文件上传库 所以我正在寻找一种降低上传带宽消耗的方法
  • 在 ngx-bootstrap 模式中向 onHide 事件发送参数

    我正在使用组件作为模板打开一个模式 一切正常 模式打开 我正在订阅 onHide 事件 订阅也有效 但我在这里面临一个挑战 我想发送一个特定的原因 例如 消息添加成功 作为原因 我怎样才能做到这一点 如何发送特定字符串作为原因 目前 我尝试
  • 正则表达式非贪婪是贪婪

    我有以下文字 tooooooooooooon 根据我正在读的这本书 当 跟在任何量词之后 它就变得非贪婪的 我的正则表达式to n仍在返回tooooooooooooon 它应该返回ton不应该吗 知道为什么吗 正则表达式只能匹配实际存在的文
  • 尝试注销 django 时出现运行时错误

    当我尝试从 django 项目注销时 出现以下错误 调用 Python 对象时超出最大递归深度 这是注销按钮的 URL url r logout users views logout name logout 这是视图 from django
  • 将自定义工具提示添加到 DataGrid 中的行

    我想自定义我的 DataGrid 以在所选行中显示工具提示 请参阅下面的模型图像以更好地了解我想要实现的目标 As it is at the moment Shows a single selected row 我多么愿意 显示选定的同一行
  • 复杂的 nHibernate QueryOver 表达式

    我在层次结构中有以下对象A gt B gt C gt D 每个对象都映射到一个表 我正在尝试使用 QueryOver 编写以下 SQL SELECT B FROM A B C D WHERE A ID B ID AND B ID C ID