NHibernate,如何读取 NamedQuery 结果元数据?
Posted
技术标签:
【中文标题】NHibernate,如何读取 NamedQuery 结果元数据?【英文标题】:NHibernate, how to read NamedQuery result metadata? 【发布时间】:2010-07-07 13:35:22 【问题描述】:我在我的 nhibernate 映射文件上有一个 sql-query 定义,它调用一个存储过程来选择一些记录。
<sql-query name="sp_MYSP">
exec MYDBSP :param1, :param2, :param3
</sql-query>
在代码上,我是这样调用命名查询的:
IQuery myQuery= Session.GetNamedQuery("sp_MYSP");
myQuery.SetString("param1", p1);
myQuery.SetString("param2", p2);
myQuery.SetString("param3", p3);
为了得到结果,我使用“列表”方法
myQuery.List();
但是以这种方式,它返回一个没有任何元信息的对象列表......比如 columname。我会像数据表一样读取结果以获取特定属性的值...我该怎么做?
所选记录不代表我的域模式的任何实体,而只是用于特定流程的数据集合。
【问题讨论】:
【参考方案1】:如果您不将该查询映射到实体并期望数据表,那么为什么要使用 NHibernate?
如果您实际上将 NHibernate 用于其余数据 (session.Connection) 并从那里创建原始 ADO.NET 命令,您仍然可以从 NHibernate 获得连接。
【讨论】:
【参考方案2】:你是对的。
不过,我从 codeprojet 上发布的这篇文章中找到了另一个解决方案:http://www.codeproject.com/KB/tips/Execute_SQL_Nhibernate.aspx
适合我的场景。
【讨论】:
以上是关于NHibernate,如何读取 NamedQuery 结果元数据?的主要内容,如果未能解决你的问题,请参考以下文章
Fluent NHibernate:如何将整个类映射为只读?
Castle ActiveRecord + NHibernate 中的交易傻瓜