0

我在我的 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。我会像数据表一样读取结果来获取特定属性的值……我该怎么办?

所选记录不代表我的域模式的任何实体,而只是用于特定流程的数据集合。

4

2 回答 2

0

如果您没有将该查询映射到实体并期望数据表,那么为什么要使用 NHibernate?

如果您实际上将 NHibernate 用于其余数据 (session.Connection) 并从那里创建原始 ADO.NET 命令,您仍然可以从 NHibernate 获得连接。

于 2010-07-07T22:46:27.890 回答
0

你是对的。

但是,我从 codeprojet 上发布的这篇文章中找到了另一个解决方案:http: //www.codeproject.com/KB/tips/Execute_SQL_Nhibernate.aspx

适合我的场景。

于 2010-07-08T09:39:06.520 回答