使用 NHibernate QueryOver 实现“不存在的地方”

2023-12-07

使用新的QueryOverNHibernate 中的 API,我需要做一些相当于:

select c.*
from Category c
where not exists (
    select *
    from CategoryProduct cp
    where cp.CategoryID = c.Id
    and cp.ProductID = 'DogFood'
)

换句话说:“给我所有不包含狗粮的类别”。

我最初的想法是这样的:

IEnumerable<Category> FindCategoriesWithoutProduct(Product product)
{
    return _session
        .QueryOver<Category>()
        .Where(c => c.Products.Contains(product))
        .List();
}

然而,这使得NHibernate.Impl.ExpressionProcessor因“无法识别的方法调用”而爆炸System.Collections.Generic.ICollection<T>.Contains().

我认为一定有其他方法可以做到这一点,可能涉及ICriterion,但我在这里和谷歌上的搜索没有返回任何有用的信息。


我只是遇到同样的问题,可能的解决方案是:

Category aliasCategory = null;
CategoryProduct aliasCategoryProduct = null;

var qcp = QueryOver.Of<CategoryProduct>(() => aliasCategoryProduct)
          .Where(() => aliasCategoryProduct.ProductID == "DogFood")
          .Where(() => aliasCategory.Id == aliasCategoryProduct.CategoryID)
          .DetachedCriteria;

return _session.QueryOver<Category>(() => aliasCategory)
               .Where(Subqueries.NotExists(qcp));

它符合我类似的标准。

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

使用 NHibernate QueryOver 实现“不存在的地方” 的相关文章

  • 我应该检查代码中的数据库约束还是应该捕获数据库抛出的异常

    我有一个将数据保存到名为 作业 的表中的应用程序 Jobs 表有一个名为 Name 的列 该列具有 UNIQUE 约束 名称列不是主键 我想知道在尝试保存 更新新条目之前是否应该自己检查重复条目 或者最好等待数据访问层抛出异常 如果这个应用
  • NHibernate 按 id 逐出

    大家都知道session中有缓存 这个缓存一般可以通过2种方法来清除 会话 驱逐 会话 清除 第二种方法不仅删除单个条目的所有缓存 我有商业方法 它接收大对象的 id 来自 aspx 站点 或有时接收多个 id 并在数据库中进行原生sql操
  • NHibernate Criteria API 是否支持集合属性的投影?

    我需要使用条件 API 复制以下工作 HQL 查询 session CreateQuery select c from Parent p inner join p Children c where p Id 9 and c Id 33 Se
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity
  • 在 nhibernate 标准中使用内置的 sql“转换”函数

    我想利用 SQL Server 2008 中的 Convert 函数 以便可以在 DateTime 列上进行搜索 建议的 SQL 看起来像这样 SELECT list of fields FROM aTable WHERE CONVERT
  • NHibernate:级联保存到子级不会插入

    我有一个像这样的双向关联 public class Parent public int ParentId get set other properties public IEnumerable
  • 一次调用多个结果

    分页数据时 我不仅想返回10条结果 还想获取所有页面中的项目总数 如何在一次调用中获取页面的总计数和结果 我的分页方法是 公共IList GetByCategoryId intcategoryId intfirstResult intmax
  • 保存时的 NHibernate FlushMode

    我已将 NHibernate 会话上的 FlushMode 属性设置为 FlushMode Never 但是当我调用 session Save User 时 无论如何都会调用数据库 这是应该如何工作的吗 我认为在我调用 Flush 之前它不
  • NHibernate双向多对多映射列表/包

    我正在努力处理双向多对多映射 其中顺序在一侧很重要 但在另一侧则不重要 我有两个班级 项目和学生 一个项目有很多学生 顺序很重要 方案A John Sally Seth 方案B Alex Seth Amy John 一个学生有很多程序 但顺
  • NHibernate IQueryable 集合作为 root 的属性

    我有一个根对象 它有一个集合属性 例如 I have a Shelf object that has Books Now public class Shelf public ICollection
  • NHibernate 将多个表映射到一个类

    在我的旧数据库中 我遇到这样的情况 TableA id A PK cod A TableB id B PK cod B id A FK TableC id C PK cod C id B FK 由于多种原因 我需要将这些表映射到单个类中 本
  • linq查询的问题

    我正在尝试使用 linq to NHibernate 使用 Fluent NHibernate 但我在 linq 查询方面遇到问题 每次我尝试执行它时 我都会收到以下消息 方法 get IsReadOnlyInitialized 类型 NH
  • NHibernate.Linq 类似

    如何使用 NHibernate Linq 生成此查询 WHERE this Name LIKE p0 p0 test Notice NO wild card 请注意 这不是 Linq To Sql 或实体框架 这就是 NHibernate
  • NHibernate双向一对一映射问题

    当尝试在 NHibernate 中创建双向一对一映射时 我发现我无法递归地获得对象的引用 例如 假设我之间有一对一的关系Person and Address 然后执行以下代码后 class Person public Address Add
  • NHibernate、Fluent NHibernate 和 Iesi.Collection 的问题。接下来你会尝试什么?

    我对 NHibernate 非常陌生 所以如果我在这里遗漏了一些琐碎的事情 我深表歉意 我目前正在阅读 packtpub 出版的一本名为 NHibernate 3 Beginners Guide 的书 我基本上都是按照书中的指示进行的 当我
  • NHibernate、数据绑定到 DataGridView、延迟加载和会话管理 - 需要建议

    我的主应用程序窗体 WinForms 有一个 DataGridView 它使用 DataBinding 和 Fluent NHibernate 显示 SQLite 数据库中的数据 该表单在应用程序运行的整个过程中都是打开的 出于性能原因 我
  • NHibernate 中的无状态会话初始化关联实体或集合失败

    我正在尝试与第 3 方 dll 中的实体建立关联 由于某些原因 我必须使用StatelessSession With StatefullSession它可以工作 但不适用于无状态 这个想法是允许第三方添加一个表并在我查询主表时获取其数据 我
  • 如何使用 NHibernate 将实体分布在多个表上?

    我有预先存在的表 使用一种开放模式 我有一个项目表 各种实体被分类为项目 然后将属性存储在项目属性表中 单个实体类型可能具有存储在多个表中的字段 我们公开带有视图的实体 所以 大多数实体对应一个视图 然后当我们插入 更新时 我们必须系统地更
  • NHibernate - 从 hbm 文件创建复杂索引

    我正在从 NHibernate 映射创建表和索引 例如 我创建 LastName 索引 如下所示
  • NHibernate:多对一和惰性

    关于 NHibernate 1 2 webapp C aspnet 3 5 和延迟加载 我不明白 也找不到一些明确的答案 多对一是否支持延迟加载 假设我们有一些Person对象和一个Squeletton目的 这两个对象都很大 具有很多属性

随机推荐

  • 将 ID 更改为其他字符串时链接 URL 中断

    我在 URL 示例 service detail 1 中有 ID 该 ID 工作正常 后来我将路由重定向到 service detail abc 但该 url 不起作用 我不确定错误是什么 我得到的路线像
  • Symfony2 记录 404 错误

    我需要能够在发生 404 错误时记录 接收电子邮件 我可以在文档中看到如何为这些错误设置新模板 但是如何首先在控制器中捕获它们 以便可以实现日志记录 电子邮件逻辑 也许添加一个监听 kernel exception 事件的事件监听器就可以了
  • 更新 MongoDB 中的嵌套对象(如果存在),否则添加它

    我在 mongoDB 中有一个像这样的 json 文档 id ObjectId 57ed88c0965bedd2b11d5727 refid 2 votes ip 127 0 2 1 rating 5 ip 127 0 3 1 rating
  • Java InputStream 在线程中关闭

    我正在尝试从线程中的输入流读取 线程应该运行的类如下所示 static private class Runner implements Runnable private InputStream fis private OutputStrea
  • 通过 REST 工具测试 WebAuthn?

    是否可以通过休息工具在本地进行测试 我已经创建了后端来生成用于注册新信用的质询等 但是如果没有 WebAuthn 响应 如果我创建了正确的方法来消化来自 WebAuthn 的响应对象 我就会不知所措 如果您正在编写 FIDO2 WebAut
  • Eclipse JavaDoc 生成失败并出现 IllegalArgumentException?

    当我尝试为任何 javadoc 注释类导出或生成 javadoc 时 我总是收到错误 直到最近它才生成完全空的 html 文件 这是我之前收到的错误 Constructing Javadoc information Standard Doc
  • 如何使用 Material-UI ThemeProvider 和 createGenerateClassName 避免类名冲突

    想知道是否有人可以阐述如何避免这样一种情况 React 应用程序使用 makeStyles 中的material ui classNames 并且其中包含一个也执行此操作的包 因此有两个名称生成器 导致多个相互冲突的 jss1 jss2 等
  • 在 R/Tidyeval 中的 RHS 上使用类胶水结构

    我花了几个小时试图在公式的 RHS 上粘上胶水 但没有任何线索 这是一个简单的表示 meta lt function x var suffix x lt x gt mutate var suffix 5 x lt x gt mutate v
  • 复杂 JSON 对象的 C# 数据协定

    这可能是非常简单的事情 我到处寻找并尝试了我能想到的一切 因此 如果这是一个简单的搜索并且我只是在寻找错误的东西 我深表歉意 我对数据契约和 JSON 也很陌生 所以这可能并不是那么复杂 我正在创建一个 API 来摄取 JSON 并将其存储
  • UIScrollView滚动时如何向一个方向移动

    我是 Objective c 的新手 我创造UIScrollView对象并使用以下代码添加到我的视图中 height self view frame size height width self view frame size width
  • Woocommerce aJax 将优惠券代码应用到购物篮

    我试图在按下按钮时将优惠券代码应用到购物篮 我有以下代码 coupon jQuery this data coupon data coupon code coupon jQuery post wc ajax apply coupon cou
  • cin 还是 printf?

    在使用 c c 工作时 1 cin cout 或者 2 scanf printf 两者中哪一个的执行或运行时间会更少 或者两者都有相同的运行时间 我的目标是减少代码的运行时间 投注相对时间控制台IO功能是恕我直言 没有任何实际用途 这是完全
  • 在单个服务器上单独的 Git 部署

    我希望我的应用程序中有一个功能 允许用户在版本之间进行更改 特别是查看冲刺之间应用程序的差异 用户只需从下拉列表中选择一个版本 Sprint A Sprint B 等 页面就会刷新 显示当时应用程序的状态 这本身应该不是什么太大的问题 我认
  • 强大的哈希字符串函数并恢复它

    我正在寻找一个强大的哈希函数 算法 来对我的代码进行哈希处理 我想将散列字符串恢复为原始字符串 我可以恢复sha到原来的 你能帮助我吗 您无法从哈希恢复原始数据 因为它在设计上是不可逆的 通常的解释是鸽巢原理 大多数哈希值约为 128 25
  • 创建框架时 Xcode 8 中未找到 filename.h 文件错误

    我正在尝试使用以下步骤创建一个框架https www raywenderlich com 65964 create a framework for ios 我已将框架文件导入到项目中 我可以为框架文件创建对象并访问方法 但是当我构建项目时
  • Android - WebView 不播放 YouTube 视频

    我有一些 WebView 代码 我试图用它在 YouTube 频道上播放 YouTube 视频 但它所做的只是在视频上显示旋转图标 而从未真正启动视频 有人知道如何解决这个问题吗 public class YoutubeActivity e
  • PHP 回发 url 谷歌钱包 IAP

    我的谷歌钱包应用内支付的回发 php 如下所示
  • 使用数组参数调用本机函数

    我完全不知道如何使用数组参数调用本机 dll 中的函数 Example 该函数在 C 项目中定义为 DllImport Project2 dll SetLastError true CallingConvention CallingConv
  • 如何将对象注入 Ninject 模块

    我正在使用 Ninject 进行 DI 我有 Ninject 模块 它将一些服务绑定到内核 并使用其他模块中的绑定对象作为服务 为了弄清楚这种情况 让我们看几行代码 这是我的安全模块 它提供了一个名为PermissionManagerCon
  • 使用 NHibernate QueryOver 实现“不存在的地方”

    使用新的QueryOverNHibernate 中的 API 我需要做一些相当于 select c from Category c where not exists select from CategoryProduct cp where