1

我有以下实体(直接映射到数据库表):

public class SurveyQuestion
{
public int SurveyQuestionID { get; set; }
public string QuestionText { get; set; }
public DateTime QuestionDate { get; set; }
public List<Answer> Answers { get; set; }
}

public class Answer
{
public int AnswerID { get; set; }
public int SurveyQuestionID { get; set; }
}

我想执行一个返回以下内容的查询(为了清楚起见,这里表示为一个类,因为我有这个类可以从我的许多失败尝试之一中复制/粘贴):

public class SurveySearchItem
{
public int SurveyQuestionID { get; set; }
public string QuestionText { get; set; }
public int AnswerCount { get; set; }
}

我想让这个查询过滤日期,按计数排序,跳过 X 行,并取 X 行,所有这些都在 sql server 端。我试图避免为这个内联编写 proc 或只使用 sql,因为在其他任何地方我都能够仅使用 nhibernate 的 queryover 或条件的东西来完成我需要的一切。

我已经搜索了许多有希望的链接(大多数在 SO 上)并尝试了许多不同的东西,但我似乎无法找到实现这一目标的方法。如果不自己编写 sql (或者可能创建一个映射到它的实体的搜索视图;我也考虑过),这不是一件可以完成的事情,我可以接受。似乎应该有一种方法可以使用 QueryOver 或其他东西来做到这一点,而我可能只是太菜鸟了,无法弄清楚。

4

1 回答 1

1

我最终在数据库中使用了一个视图并创建了一个通过 nhibernate 映射到它的类(然后忘记了我已经发布了这个问题大约 6 个月)。那是绝对最简单的解决方案,从那时起,我不得不在其他项目的类似场景中做同样的事情。有人可能会争辩说 proc 或 inline sql 路由可能是更好的选择,但 view 方法使其与所有其他代码更加一致(因为它看起来只是映射到另一个表的另一个实体)。

于 2012-10-31T20:48:56.077 回答