2010-09-15 50 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列。