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

所选记录不代表我的域模式的任何实体,而仅代表特定过程的数据使用集合。

有帮助吗?

解决方案 2

你是对的。

但是,我在CodeProjet上找到了本文的另一个解决方案: http://www.codeproject.com/kb/tips/execute_sql_nhibernate.aspx

适合我的场景。

其他提示

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

如果您实际上将其用于其余数据(session.connection)并从那里创建一个RAW ADO.NET命令,则仍然可以从NHIBERNATE获得连接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top