带有XML参数的NHibernate存储过程
我想我在这一点上疯了:这是一个相当简单的场景,应该记录下来,但是。。。不 以下是我的存储过程声明:带有XML参数的NHibernate存储过程,xml,nhibernate,Xml,Nhibernate,我想我在这一点上疯了:这是一个相当简单的场景,应该记录下来,但是。。。不 以下是我的存储过程声明: CREATE PROCEDURE [dbo].[spImport] ( @xmlDocument AS XML ) AS --- GO 以下是我的映射: <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="XXX" namespac
CREATE PROCEDURE [dbo].[spImport]
(
@xmlDocument AS XML
)
AS
---
GO
以下是我的映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="XXX"
namespace="XXX.Entities">
<sql-query name="spImport">
<![CDATA[EXEC [dbo].[spImport] @xmlDocument = :xmlDocument]]>
</sql-query>
</hibernate-mapping>
现在,我得到了福林错误:
在准备EXEC[dbo].[spImport]@xmlDocument时
=@p0在InnerException:SqlCommand中发生错误。Prepare方法要求显式设置所有可变长度参数
非零大小
谢谢你的帮助,
Stefan从未花时间真正解决XmlType长度问题。会对“干净”的答案感兴趣。无论如何,我的解决方法如下: 我假设您使用的是NHibernateUtil.XmlDoc:IUserType 作为SqlTypes实现,我有:
public SqlType[] SqlTypes
{
get
{
return new SqlType[] { new SqlXmlType() };
}
}
其中,SqlXmlType是:
public class SqlXmlType : SqlType
{
public SqlXmlType() : base(System.Data.DbType.Xml,5000000)
{
}
}
允许我处理最多5个Mo XmlDocs
希望这会有所帮助嗨,这太好了,谢谢。不过,和你一样,我也非常希望有一个干净的解决方案!
public class SqlXmlType : SqlType
{
public SqlXmlType() : base(System.Data.DbType.Xml,5000000)
{
}
}