这是代码,我如何调用存储过程
ISession session = NHibernateHelper.GetCurrentSession();
IQuery q = session.GetNamedQuery("ps_getProgressBarData1");
var t = q.List();
XML映射
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ReleaseDAL" assembly="ReleaseDAL">
<sql-query name="ps_getProgressBarData1">
<return alias="ProgressBar" class="ProgressBar">
<return-property name="Tot" column="Tot"/>
<return-property name="subtot" column="subtot"/>
</return>
exec ps_getProgressBarData1
</sql-query>
</hibernate-mapping>
类映射
public virtual Int32 Tot {get { return _Tot; } set { _Tot = value; } }
public virtual Int32 subtot { get { return _subtot; } set { _subtot = value; }}
我得到例外:No persister for: ReleaseDAL.ProgressBar, ReleaseDAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
请告诉我这里的问题是什么?
由于
答案 0 :(得分:2)
如果您没有将映射文件标记为embedded resource
,则可能会收到该错误。请先检查一下。
答案 1 :(得分:0)
你没有ProgressBar的映射(它不是我想的实体),所以你可能只想从查询中得到一个DTO。
因此,您只需将结果映射为标量,并在查询中定义变换器。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ReleaseDAL" assembly="ReleaseDAL">
<sql-query name="ps_getProgressBarData1">
<return-scalar column="Tot" Type="xxx"/>
<return-scalar column="subtot" Type="xxx"/>
exec ps_getProgressBarData1
</sql-query>
</hibernate-mapping>
并在查询方法中:
query.SetResultTransformer(Transformers.AliasToBean(typeof(ProgressBar )));
query.List()