小编jcc*_*jcc的帖子

使用 HAVING COUNT 对 NHibernate 的 SQL 查询

我正在尝试在 NHibernate 中重新创建以下查询:

SELECT DISTINCT
        orderid ,
        tasktype
FROM    "Task"
WHERE   orderid IN ( SELECT orderid
                     FROM   "Task"
                     GROUP BY orderid
                     HAVING COUNT(orderid) > 1 )
ORDER BY orderid
Run Code Online (Sandbox Code Playgroud)

在 NH 中,我需要一个 QueryOver,它根据订单 ID 返回任务类型列表。基本上,我正在迭代每个任务,并且对于每个发生不止一次的任务(因为任务类型不同),我需要将所有这些任务添加到返回给客户端的列表中。这是我迄今为止在 NH 上尝试过的。

var taskList = new List<Task>();
PendingTasks = session.QueryOver<Model.Task>()
              .WhereRestrictionOn(c => c.OrderId).IsIn(taskList)
              .SelectList
              (list => list
                 .SelectGroup(b => b.OrderId)
                 .Select(b => b.TaskType)
              )
              .Where(Restrictions.Eq(Projections.Count<Model.Task>(x => x.OrderId), taskList.Count() > 1))
              .TransformUsing((Transformers.AliasToBean<TaskType>()))
              .List<TaskType>()
Run Code Online (Sandbox Code Playgroud)

我刚刚开始 NH,并在这里找到了一些关于使用分组和拥有的例子。我返回给客户端的模型的属性在这里,TaskType 是一个简单的枚举。

public List<TaskType> PendingTasks { get; set; }
Run Code Online (Sandbox Code Playgroud)

到目前为止,在我看来,QueryOver 正在尝试针对我的目标列表类型返回一个 IList,但是没有 …

c# sql nhibernate fluent-nhibernate

4
推荐指数
1
解决办法
2051
查看次数

标签 统计

c# ×1

fluent-nhibernate ×1

nhibernate ×1

sql ×1