3

我目前有一个问题,我们试图通过 NHibernate 映射保存一些 XML,它工作正常,除非 XML 达到一定长度。映射看起来像这样:

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

抛出的异常是:

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

显然它告诉我字符串太长了,尽管作为一个 XML 映射,我不会认为这会是一个问题?通过插入将 XML 直接保存到 SQL Server 数据库中可以正常工作,因此看起来问题出在 NHibernate 映射上。有没有人有任何想法?

4

1 回答 1

3

尝试将映射更改为以下内容:

Property(x => x.Expression, c =>
{
    c.NotNullable(true);
    c.Type(NHibernateUtil.XmlDoc);
});

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

似乎 NHibernate 并不总是正确地将 XML 映射到字符串,尤其是当它是一个长字符串时。

如果你想多一点 LINQy,你可以使用 an XDocumentwith the NHibernateUtil.XDoc,虽然我自己没有尝试过。

于 2012-09-28T10:32:11.473 回答