Fra*_*sca 5 nhibernate stored-procedures parameter-passing
我在 NHibernate 中有一个映射如下的存储过程:
<sql-query name="HistoricSearch">
<return class="ResultItem">
</return>
exec dbo.SelectHistoricResultItem :StartDate, :EndDate, :ListA, :ListB, :ListC
</sql-query>
Run Code Online (Sandbox Code Playgroud)
如果每个搜索选项列表包含单个参数,则以下代码可以正常工作:
IQuery query = session.GetNamedQuery("HistoricSearch");
query.SetDateTime("StartDate", fromDate);
query.SetDateTime("EndDate", toDate);
query.SetParameterList("ListA", searchOptionA);
query.SetParameterList("ListB", searchOptionB);
query.SetParameterList("ListC", searchOptionC);
List<ResultItem> resultItems = (List<ResultItem>)query.List<ResultItem>();
return resultItems;
Run Code Online (Sandbox Code Playgroud)
但如果列表包含多个值,我会收到以下错误:
Procedure or function SelectHistoricResultItem has too many arguments specified
Run Code Online (Sandbox Code Playgroud)
根据SetParameterList()方法的描述,它应该“将多个值绑定到命名查询参数”。我认为问题出在映射文件中:
exec dbo.SelectHistoricResultItem :StartDate, :EndDate, :ListA, :ListB, :ListC
Run Code Online (Sandbox Code Playgroud)
但我不知道如何构建它以允许多个参数。谁能告诉我这是怎么做到的?
谢谢<3
好吧,经过一番实验,我发现这个方法对我有用。
query.SetParameter("ListA", string.Join(", ", searchOptionA));
query.SetParameter("ListB", string.Join(", ", searchOptionB));
query.SetParameter("ListC", string.Join(", ", searchOptionC));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3736 次 |
| 最近记录: |