NHibernate保存长XML时抛出异常

3

我目前遇到的问题是,我们正在尝试通过NHibernate映射保存一些XML,这个过程一直很顺利,但当XML长度达到一定程度时就会出现问题。该映射看起来大概是这样的:

Property(x => x.Expression, c =>
{
    c.NotNullable(true);
    c.Column(m => m.SqlType("xml"));
});

抛出的异常信息为:

字符串值的长度超过了映射/参数中配置的长度。

显然,它告诉我字符串太长了,但由于它是一个XML映射,我认为这不应该是个问题。通过插入直接将XML保存到SQL Server数据库中可以正常工作,因此看起来问题出在NHibernate映射上。有人有什么想法吗?
1个回答

3
尝试将映射更改为以下内容:
Property(x => x.Expression, c =>
{
    c.NotNullable(true);
    c.Type(NHibernateUtil.XmlDoc);
});

然后您的域对象应该使用XmlDocument而不是字符串。

似乎NHibernate并不总是正确地将XML映射到字符串上,特别是在字符串很长的情况下。

如果您想更加LINQy,可以使用带有NHibernateUtil.XDocXDocument,尽管我自己没有尝试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接