NHibernate如何为命名查询设置字符串类型查询参数

NHibernate如何为命名查询设置字符串类型查询参数,nhibernate,stored-procedures,parameters,mapping,varchar,Nhibernate,Stored Procedures,Parameters,Mapping,Varchar,我正在通过NHibernate调用一个存储过程。一切正常,只是当我试图通过代码设置存储过程输入参数时,它不返回任何值。 对于签名类似于的存储过程 dbo.sp_MySp @search_option char(10), ...... dbo.sp_MySp@search_选项字符(10),… 这很有效 映射 <sql-query name="sp_MySp"> exec dbo.sp_MySp @search_option='ab', ... </

我正在通过NHibernate调用一个存储过程。一切正常,只是当我试图通过代码设置存储过程输入参数时,它不返回任何值。

对于签名类似于
的存储过程

dbo.sp_MySp @search_option char(10), ......
dbo.sp_MySp@search_选项字符(10),…
这很有效 映射

    <sql-query name="sp_MySp">
      exec dbo.sp_MySp @search_option='ab', ...
    </sql-query>
<sql-query name="sp_MySp">
        <query-param name="search_option" type="String"/>
         exec dbo.sp_MySp @search_option=:search_option, ---
</sql-query>

exec dbo.sp_MySp@search_option='ab'。。。
代码

var query=Session.GetNamedQuery(“sp_MySp”)
var results=query.List()
这行不通 映射

    <sql-query name="sp_MySp">
      exec dbo.sp_MySp @search_option='ab', ...
    </sql-query>
<sql-query name="sp_MySp">
        <query-param name="search_option" type="String"/>
         exec dbo.sp_MySp @search_option=:search_option, ---
</sql-query>

exec dbo.sp_MySp@search_option=:search_option---
代码

var query = Session.GetNamedQuery("sp_MySp");
query.SetParameter("search_option", "ab");
var results = query.List();
var query=Session.GetNamedQuery(“sp_MySp”)
SetParameter(“搜索选项”、“ab”)
var results=query.List()

有人能指出我在这里遗漏了什么吗……

我发现了问题所在。Guess query.SetParameter不够,因为它可能没有告诉NHibernate参数的数据类型。将其更改为query.SetAnsiString(“search_option”、“ab”)使其正常工作。呜呜!我发现了这个问题。Guess query.SetParameter不够,因为它可能没有告诉NHibernate参数的数据类型。将其更改为query.SetAnsiString(“search_option”、“ab”)使其正常工作。呜呜!