【发布时间】:2010-11-30 23:41:23
【问题描述】:
我已将一个类映射到 SQL Server 表,并使用 SQL 命名查询从中检索一些行。另外我不希望某些页面上的所有列(例如,如果它是一个文档,我只想在“查看详细信息”页面上显示其全部内容,而它的标题可以在列表和“查看详细信息”页面。
如果我没有选择相关表的所有列,我会在我遗漏的列上收到 IndexOutOfRangeException。
有没有办法仅将我感兴趣的列投射到命名查询上,还是我必须为应用程序的不同范围创建额外的 POCO?
问候, F.
【问题讨论】:
-
您的表定义和投影查询将有助于回答这个问题。顺便说一句 - 您使用 SQL 查询而不是 HQL、Criteria、LINQ 等的任何原因? SQL 查询仅适用于其他查询机制无法生成最佳 SQL 的边缘情况。
-
我需要从包含 DocumentTitle、Text、PublishDate、AddDate、EditDate、Caption、AuditedBy 等列的表中检索前 X 行。在列表页面上,我只想显示 DocumentTitle 和 PublishDate。它有一个到 C# 类的 XML 映射,只要我拉出查询中的所有列,它就可以正常工作。
-
由于我是 NHibernate 的新手,并且在我们正在构建的 Web 应用程序中会有很多查询,我更喜欢坚持使用 SQL 而不是检查日志文件以查看哪种 SQL正在生成以及它的效率如何。 Criteria 有一个很好的 API,并提供了一种 OO 方式来查询数据,我可能最终会使用它。
标签: nhibernate orm projection