如何在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<>
有关,但不知道怎么回事。请帮忙。
一种方法是使用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专用类型。。。