【问题标题】:NHibernate stored procedures - set parameter sizes?NHibernate 存储过程 - 设置参数大小?
【发布时间】:2012-07-01 02:41:47
【问题描述】:

我正在使用GetNamedQuery 执行一个存储过程,并使用SetString 设置一个字符串参数。 NHibernate 将字符串参数设置为NVarchar(4000)。我的字符串参数值实际上比这个长,所以被截断了。

有没有办法告诉 NHibernate 在执行查询时使用更长的字符串类型?查询在映射文件中被简单地定义。 exec dbo.ProcessUploads :courseId, :uploadxml

编辑:我的参数都不是相关实体的属性。

【问题讨论】:

标签: c# sql-server nhibernate stored-procedures


【解决方案1】:

由于 NHibernate 没有足够的信息来自动设置参数长度,您必须手动设置。

例子:

session.GetNamedQuery("ProcessUploads")
       .SetParameter("courseId", courseId)
       .SetParameter("uploadXml", uploadXml, NHibernateUtil.StringClob)
       .ExecuteUpdate();

在这种情况下,我使用的是StringClob,它将转换为NVARCHAR(max)

【讨论】:

    【解决方案2】:

    您应该向我们展示或检查您的 HBM 文件的参数。在那里您可以指定字段/属性类型、长度...

    这里你可以在官方nHibernate documentation读到

    【讨论】:

    • 只是添加到这个答案...... NHibernate 正在使用映射属性来计算参数的长度。关于这个问题的更多信息:stackoverflow.com/questions/4932841/…
    • 我设置的参数不是相关实体的属性。有问题的是一个由存储过程处理的 xml 字符串。
    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2013-02-24
    • 2014-06-02
    • 2013-11-25
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多