【问题标题】:Calling Stored procedure using Nhibernate -- Getting exception No persister for:使用 Nhibernate 调用存储过程——获取异常没有持久性:
【发布时间】:2023-03-26 17:07:01
【问题描述】:

这是代码,我如何调用存储过程

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

请告诉我这里有什么问题?

谢谢

【问题讨论】:

    标签: c# asp.net nhibernate stored-procedures fluent-nhibernate


    【解决方案1】:

    如果没有将映射文件标记为embedded resource,您可能会收到该错误。请首先检查。

    【讨论】:

    • 是的,这很好,现在我遇到了这个问题-------没有持久性:ReleaseDAL.ProgressBar,ReleaseDAL,Version=1.0.0.0,Culture=neutral,PublicKeyToken=空
    • 请检查网站上的其他问题并告诉我是否适合您stackoverflow.com/questions/57804/…
    • 不,这对我不起作用。我已经检查过了。我赞成,因为你的第一个线索正在工作,现在我得到了其他没有持久性的问题:ReleaseDAL.ProgressBar
    • ProgressBar 类在命名空间“ReleaseDAL”上?
    • 抱歉,我的想法不多了。也许您可以粘贴 ProgressBar 映射并检查此映射文件是否标记为嵌入资源
    【解决方案2】:

    好吧,您没有 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多