使用Nhibernate命名查询调用存储过程

时间:2013-05-21 10:49:28

标签: c#-4.0 nhibernate sql-server-2008-r2 fluent-nhibernate-mapping

我在使用nhibernate中的命名查询调用过程时遇到问题。我有一个接受三个参数的过程,第一个是varchar(max),实际上是一个guid列表,第二个是varchar(50),第三个是bit类型。

我在C#中使用命名查询Nhibernate

使用以下过程
 var Customerbalance = Session.GetNamedQuery("ar_tARCustomer_ReadAccount_ForBalanceDetail_New")
                                           .SetParameter("CustomerList", "'''bced443a-ce86-4675-bca6-ae5646ad9c2e'' , ''bced443a-ce86-4675-bca6-ae5646ad9c2e'''")
                                           .SetParameter("AsOfDate", "10/1/2012")
                                           .SetParameter("PostedOnly", PostedOnly)
                                           .SetResultTransformer(new AliasToBeanResultTransformer(typeof(tARCustomer))).List<tARCustomer>();

以下代码适用于.hbm.xml文件

<sql-query name="ar_tARCustomer_ReadAccount_ForBalanceDetail_New" callable="true">
    <!--<query-param name="CustomerList" type="VARCHAR(max)" />
    <query-param name="AsOfDate" type="string" />
    <query-param name="PostedOnly" type="bool" />-->
    <return class="tARCustomer">
    </return>

    exec ar_tARCustomer_ReadAccount_ForBalanceDetail_New
    @CustomerList=:CustomerList,
    @AsOfDate=:AsOfDate,
    @PostedOnly=:PostedOnly
  </sql-query>

当我调试代码时,它会给出错误:

  

转换无法将字符串转换为uniqueidentifier

当我在sql server中传递这些相同的参数时,它成功运行。

在C#中,我尝试了所有类型的组合,使用NHibernate将参数传递给过程,但它总是崩溃。

0 个答案:

没有答案