我在使用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将参数传递给过程,但它总是崩溃。