解決策を見つけるのに苦労したので、ここで解決策を共有したいと思います(XElementの代わりにXDocumentを使用しますが、少なくとも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列に変わります。