如何在NHIbernare中将sql-TypeXML列映射到字符串属性

本文关键字:映射 字符串 属性 sql-TypeXML NHIbernare 中将 | 更新日期: 2023-09-27 18:28:00

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

属性定义为:

public virtual string Request { get; protected set; }

在映射类中,我有:

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

从数据库中选择数据时,我遇到以下异常:

数据类型xml和nvarchar在等于运算符中不兼容。无纤维

我希望这与CustomType<>有关,但不知道怎么回事。请帮忙。

如何在NHIbernare中将sql-TypeXML列映射到字符串属性

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

完整的解决方案如下所述:

Fluent NHibernate和XML列

其中我们添加约定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>();
    }
} 

通过这种方式,我们将使用用于xml列的NHibernate专用类型。。。