4

新しいサイトをゼロから構築しており、ORM に Fluent NHibernate を使用することを検討しています。おそらく私の XML 列を除いて、すべてを簡単に処理できると思います。私は NHibernate を使ってサイトを構築したことがまったくないので (Java 用に Hibernate を使用したことはありますが)、私を n00b と考えてください。

理想的には、XML を Linq-to-SQL のように XElement として扱いたいと考えています。

(流暢な) NHibernate でこれを行うことはできますか? 自動マッピングを使用したい場合はどうすればよいですか?

4

2 に答える 2

6

ここで定義されている IUserType を使用できます: https://nhibernate.jira.com/secure/attachment/12905/XmlType.cs

XmlDocument を使用していますが、代わりに XElement で動作するように簡単に変更できます。

更新:これは NHibernate 3 に含まれています。XmlDocument と XDocument の両方が利用可能です。

于 2010-09-16T03:19:14.513 に答える
2

解決策を見つけるのに苦労したので、ここで解決策を共有したいと思います(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列に変わります。

于 2013-02-06T09:51:38.553 に答える