如何将sql Type XML列映射到NHIbernatre中的字符串属性?

时间:2015-12-24 06:22:12

标签: c# xml nhibernate fluent-nhibernate nhibernate-mapping

如何在c#中的NHibernate中将XML列映射到字符串属性?

该属性定义为:

public virtual string Request { get; protected set; }

在地图类我有:

Map(o => o.Request).Column("Request").Nullable();

从db:

中选择数据时,我遇到异常
  

数据类型xml和nvarchar在等于运算符中不兼容。 NHibernate的

我希望它与CustomType<>有关,但不知道如何处理。请帮忙。

1 个答案:

答案 0 :(得分:1)

一种方法是使用XDocument作为属性类型,使用约定,将任何属性映射到"NHibernate.Type.XDocType"

此处描述了完整的解决方案:

Fluent NHibernate and XML columns

我们添加约定Conventions.Add<XmlTypeConvention>();并将其定义为:

public class XmlTypeConvention : IUserTypeConvention
{
    public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
    {
        criteria.Expect(x => x.Type == typeof(XDocument));
    }

    public void Apply(IPropertyInstance instance)
    {
        instance.CustomType<NHibernate.Type.XDocType>();
    }
} 

这样我们就可以使用NHibernate专用的xml列了...