当参数值超过4000个字符时,Nhibernate会截断存储过程输入参数

当参数值超过4000个字符时,Nhibernate会截断存储过程输入参数,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,如何在Nhibernate映射文件中指定存储过程的字符串输入参数的长度 这是我的映射内容 <sql-query name="Sp_News" resultset-ref="NewsPackResultSet" cacheable="false"> <query-param name="SearchString" type="System.String" /> <query-param name="StartDate"

如何在Nhibernate映射文件中指定存储过程的字符串输入参数的长度

这是我的映射内容

<sql-query name="Sp_News" resultset-ref="NewsPackResultSet" cacheable="false">

    <query-param name="SearchString"       type="System.String" />
    <query-param name="StartDate"          type="System.DateTime" />

          exec dbo.Sp_News:SearchString,:StartDate

</sql-query>

exec dbo.Sp_新闻:SearchString,:StartDate
当SearchString参数的长度超过4000个字符时,Nhibernate将截断该参数值。如何解决此限制


如果您有任何帮助,我们将不胜感激。

找到了此问题并找到了答案:

IQuery query = session.GetNamedQuery("Sp_News");
query.SetParameter("SearchString", longString, NHibernateUtil.StringClob);

NHibernateUtil.StringClob是关键:-)

我认为在调用存储过程之前,您应该验证这一点。为什么搜索参数要多于几个字符或单词呢?这听起来还是应该事先验证的。如果要将数据发送到存储的进程,则不应仅因为太长而发送“可能”失败的数据。如果要存储文章,为什么要将其限制为4000个字符?嗨,问题解决了吗?我有同样的一个:(