nhibernate - id不在列表中的查询

标签 nhibernate queryover

我已经为此苦苦挣扎了一段时间,所以我希望你们中的一些 QueryOver 专家可以提供帮助。

我有一个博客文章列表。您可以对每篇博客文章进行投票,我希望(除其他外)收到用户未投票的文章列表。

首先,我正在考虑做类似的事情:

Session.QueryOver<BlogPost>()
.WhereRestrictionOn(bp => bp.Id)
.NotIn(existingBlogPostVotes);

(existingBlogPostVoteIds 是已投票博文的 ID)

但这在 QueryOver 框架中不存在。

我发现我可以像这样在 Criteria 中做到这一点:
var crit =
     Session.CreateCriteria<BlogPost>()
     .Add(Restrictions.Not(Restrictions.In("Id",existingBlogPostVotes)));

但我会在 QueryOver 而不是 Criteria 中做到这一点。

这将如何在 QueryOver 中完成?

最佳答案

怎么样Not.IsIn() :

   Session.QueryOver<BlogPost>()
          .WhereRestrictionOn(bp => bp.Id)
          .Not.IsIn(existingBlogPostVotes);

或者,这也可以在 Linq 提供程序中完成:
   Session.Query<BlogPost>()
          .Where(bp => !existingBlogPostVotes.Contains(bp.Id));

关于nhibernate - id不在列表中的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444447/

相关文章:

nhibernate - 防止 NHibernate 将属性映射到代理

c# - NHibernate QueryOver 中的排序和分组

asp.net-mvc-3 - 如何在 NHibernate 3.2 中实现通用存储库模式和 UoW

NHibernate QueryOver子查询

c# - Nhibernate QueryOver - 为多对多关系执行 Has All

c# - QueryOver 错误 : Unrecognised method call in expression value

nhibernate - 无法从NHibernate.Driver.SQLiteDriver创建驱动程序

NHibernate 简单的一对多映射使用 NHibernate.Mapping.Attributes

nhibernate - 使用 NHibernate QueryOver,如何在日期之间添加类型安全限制

c# - 搜索文本包含 QueryOver