C# 使用Nhibernate调用存储过程--获取以下对象的异常无持久化器:
下面是代码,我是如何调用存储过程的C# 使用Nhibernate调用存储过程--获取以下对象的异常无持久化器:,c#,asp.net,nhibernate,stored-procedures,fluent-nhibernate,C#,Asp.net,Nhibernate,Stored Procedures,Fluent Nhibernate,下面是代码,我是如何调用存储过程的 ISession session = NHibernateHelper.GetCurrentSession(); IQuery q = session.GetNamedQuery("ps_getProgressBarData1"); var t = q.List(); XML映射 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Rele
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>
我遇到异常:没有持久化:ReleaseDAL.ProgressBar,ReleaseDAL,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null
请告诉我这里有什么问题
谢谢如果没有将映射文件标记为
嵌入式资源
,则可能会出现该错误。请首先检查它。您没有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>
是的,这是非常好的一点,现在我得到了这个问题------没有持久化:ReleaseDAL.ProgressBar,ReleaseDAL,Version=1.0.0.0,Culture=neutral,PublicKeyToken=nulls请检查网站上的另一个问题,告诉我是否对你有效不,这对我无效。我已经检查过了。我支持你的第一条工作线索,现在我得到了另一个没有持久性的问题:ReleaseDAL.ProgressBar类ProgressBar在名称空间“ReleaseDAL”上?对不起,我没有主意了。也许您可以粘贴ProgressBar映射,并检查此映射文件是否标记为嵌入资源
<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()