在NHibernate中保存时,长XML抛出异常

时间:2012-09-28 09:48:32

标签: c# sql-server nhibernate

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

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

抛出的异常是:

  

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

似乎NHibernate并不总是正确地将XML映射到字符串,特别是如果它很长。

如果你想要更多LINQy,你可以XDocument使用NHibernateUtil.XDoc,虽然我自己没有尝试过。