流利的NHibernate和XML专栏

我从头开始构建一个新网站,并考虑使用流利NHibernate作为我的ORM。 我认为它可以轻松处理所有事情,除了可能的话,我的XML列。 我从来没有用NHibernate建立网站(尽管我已经使用Hibernate for Java),所以我认为我是n00b。

理想情况下,我希望XML可以像Linq-to-SQL一样作为XElement对待。

我可以用(流利的)NHibernate来做到这一点吗? 如果我想使用自动映射怎么办?


您可以使用此处定义的IUserType:https://nhibernate.jira.com/secure/attachment/12905/XmlType.cs

它使用XmlDocument,但您可以轻松修改它以使用XElement。

更新:这已包含在NHibernate 3中.XmlDocument和XDocument都可用。


由于我努力寻找解决方案,我想在此分享我的解决方案(使用XDocument而不是XElement,但至少对XML列有效)。

首先创建这个约定;

using System.Xml.Linq;
using FluentNHibernate.Conventions;
using FluentNHibernate.Conventions.AcceptanceCriteria;
using FluentNHibernate.Conventions.Inspections;
using FluentNHibernate.Conventions.Instances;

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>();
    }
} 

然后记得添加约定;

Conventions.Add<XmlTypeConvention>();

现在,如果您的域实体具有XDocument属性,它将变成数据库中的XML列。

链接地址: http://www.djcxy.com/p/39455.html

上一篇: Fluent NHibernate and XML columns

下一篇: How to quote Fieldnames in Fluent NHibernate 1.1