我目前遇到一个问题,即我们试图通过NHibernate映射保存一些XML,除非XML达到一定长度,否则它可以正常工作。映射看起来像这样:
Property(x => x.Expression, c =>
{
c.NotNullable(true);
c.Column(m => m.SqlType("xml"));
});
抛出的异常是:
字符串值的长度超过映射/参数中配置的长度。
显然它告诉我字符串太长了,虽然作为XML映射我不会想到这会是一个问题吗?通过插入将XML直接保存到SQL Server数据库中可以正常工作,因此看起来问题与NHibernate映射有关。有没有人有任何想法?
答案 0 :(得分:3)
尝试将映射更改为以下内容:
Property(x => x.Expression, c =>
{
c.NotNullable(true);
c.Type(NHibernateUtil.XmlDoc);
});
然后您的域对象使用XmlDocument
而不是字符串。
似乎NHibernate并不总是正确地将XML映射到字符串,特别是如果它很长。
如果你想要更多LINQy,你可以XDocument
使用NHibernateUtil.XDoc
,虽然我自己没有尝试过。