我的nhibernate映射文件中有一个sql-query define,它调用存储过程来选择一些记录。
<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);
获得结果我使用“List”方法
myQuery.List();
但是以这种方式返回一个没有任何元信息的对象列表......比如columname。我会读取结果像数据表来获取特定属性的值...我该怎么办?
所选记录不代表我的域模式的任何实体,而只代表特定流程使用的数据集合。
答案 0 :(得分:0)
如果您没有将该查询映射到实体并期望数据表,为什么要使用NHibernate呢?
如果您实际上将其用于其余数据(session.Connection)并从那里创建原始ADO.NET命令,您仍然可以从NHibernate获得连接。
答案 1 :(得分:0)
你是对的。
但是我发现本文的另一个解决方案是在codeprojet上发布的:http://www.codeproject.com/KB/tips/Execute_SQL_Nhibernate.aspx
适合我的情景。