Nhibernate 如何设置存储过程参数的长度

Nhibernate 如何设置存储过程参数的长度,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,出于某些考虑,我正在使用存储过程在数据库中插入一个实体。 我的一些字段的长度可能超过4000个字符,但是NH生成的查询声明了一些nvarchar(4000)变量来传递参数值。 有没有办法设置存储过程参数的长度? 我的参数映射如下所示: <query-param type="System.String" name="ArticleBody" /> <query-param type="System.String" name="ArticleBody" length="20000

出于某些考虑,我正在使用存储过程在数据库中插入一个实体。 我的一些字段的长度可能超过4000个字符,但是NH生成的查询声明了一些nvarchar(4000)变量来传递参数值。 有没有办法设置存储过程参数的长度? 我的参数映射如下所示:

<query-param type="System.String" name="ArticleBody" />
<query-param type="System.String" name="ArticleBody" length="20000" />

当我在该标记中设置length属性时,如下所示:

<query-param type="System.String" name="ArticleBody" />
<query-param type="System.String" name="ArticleBody" length="20000" />

我得到这个错误: “News360.Common.Singleton`1'的类型初始值设定项引发异常。”

任何帮助都将不胜感激 感谢并问候

很好,
元素只支持
类型
名称
属性

真正的问题是你使用了错误的类型。事实上,我认为你也在声明你的类型是错误的。type属性要求值显示在5.2.2中表格的第一列。NHibernate引用中的基本值类型

因此,请使用
StringClob
而不是
string
(而不是System.string)


cheers

检查内部异常-它将告诉您有关错误的更多信息。“异常已由调用的目标引发”中的内部异常。我知道此错误,它在创建SessionFactory实例时出现。这个错误没有帮助。问题是如何设置参数的长度。看来“length”属性不是正确的方式。内部异常是怎么说的,@user1078853?亲爱的犬夜叉,内部异常是“异常已被调用的目标抛出”。在装入SessionFactory的单例实例时引发了该错误。如果映射文件(*.hbm.xml文件)中存在任何错误,则我会出现此错误,因此我认为这是因为在“query param”标记中添加了“length”属性,这意味着此属性未定义。感谢亲爱的Jaguar。我已经将类型更改为StringClob,但结果是一样的。NH生成的查询声明了一些nvarchar(4000)变量来传递值,我想是这样的。现在,我将我的大字符串拆分为大约4000个字符串,并将它们连接到存储过程中。太傻了!使用StringClob是正确的方法!我已经更改了映射,将“System.String”替换为“StringClob”。但正确的解决方案是使用StringClob为查询设置参数,如:“query.SetParameter(“ArticleBody”,ArticleBody,NHibernateUtil.StringClob)”。谢谢亲爱的捷豹。