nHibernate:使用 QueryOver 的连接和分离

标签 nhibernate nhibernate-criteria queryover

假设我有一个需要使用 nHibernate 呈现的 SQL 查询。 SQL 查询的 哪里条款由三个组成或 语句,每个语句都包含一个条件列表。例如:

SELECT * 
FROM MyTable 
WHERE
    (OrderId = 1 and ItemId = 100) 
    OR
    (OrderId = 2 and ItemId = 200)
    OR
    (OrderId = 3 and ItemId = 300)

使用 nHibernate 的 标准 语法,我可以使用析取来实现:
var disjunction = Restrictions.Disjunction();

foreach (var tuple in OrdersAndLineItems)
{
    var conjunction = Restrictions.Conjunction();
    var order = tuple.Item1;
    var lineitem = tuple.Item2;

    conjunction.Add(Restrictions.Eq("OrderId", order.Id));
    conjunction.Add(Restrictions.Eq("LineItemId", lineitem.Id));

    disjunction.Add(conjunction);
}

var result = Session.CreateCriteria<SomeClass>().Add(disjunction).ToList();

我将如何使用 编写相同类型的查询查询结束 nHibernate 3.x 中的语法?

最佳答案

至少在 NH 3.0.0.4000 版本中,Add 方法有多个重载。其中之一是具有可用于您的案例的通用参数,例如:

disjuction.Add<TypeinWhichPrimaryKeyPropertyExists>(x => x.PrimaryKey == 1)

关于nHibernate:使用 QueryOver 的连接和分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837163/

相关文章:

c# - 复杂的 nHibernate QueryOver 表达式

asp.net-mvc-3 - 无法解析 : User. Core.Entities.Teacher 的属性 : Harrods. Full_Name

nhibernate - 流利的 NHibernate 复合 ID 到映射类

c# - Nhibernate LINQ - 缓存问题

nhibernate - 流利的NHibernate有很多外键映射问题

c# - 如何使用 nhibernate 选择字典值中的列?

nhibernate - 带有 TransactionScope 和增量身份生成器的 SQLite

grails - GORM中的标准制定

nhibernate - QueryOver 语句以 DateTime 降序选择 N 行

c# - NHibernate QueryOver 的按位运算和扩展方法