2010-09-15 67 views
4

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

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

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

回答

2

由于我努力寻找解决方案,我想在这里分享我的解决方案(使用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列。