如何在c#中的NHibernate中将XML列映射到字符串属性?
该属性定义为:
public virtual string Request { get; protected set; }
在地图类我有:
Map(o => o.Request).Column("Request").Nullable();
从db:
中选择数据时,我遇到异常数据类型xml和nvarchar在等于运算符中不兼容。 NHibernate的
我希望它与CustomType<>
有关,但不知道如何处理。请帮忙。
答案 0 :(得分:1)
一种方法是使用XDocument作为属性类型,使用约定,将任何属性映射到"NHibernate.Type.XDocType"
此处描述了完整的解决方案:
我们添加约定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列了...