我正在尝试在 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,但是没有 …