1

私は NHibernate を初めて使用し、Fluent NHibernate automap でいくつかの問題に直面しています。

私はNhibernate 3.3.3.400、Fluent Nhibernate 1.3.0.733 Automapper 2.2.1を使用しています

データベースに Xml 型の列があります。ma マッピング列を作成しようとすると、次のエラーが表示されます。

テーブル Product からの関連付けは、マップされていないクラス System.Xml.XmlDocument を参照しています。

以下は、私が実装しようとしているコードです。

using System.Collections.Generic;
using System.Xml;

//using System.Xml.Linq;

namespace Examples.FirstAutomappedProject.Entities
{
    public class Product
    {
        public virtual int Id { get; protected set; }
        public virtual string Name { get; set; }
        public virtual double Price { get; set; }
        public virtual Location Location { get; set; }
        public virtual IList<Store> StoresStockedIn { get; set; }
        public virtual XmlDocument SalesRange { get; set; }

        public Product()
        {
            StoresStockedIn = new List<Store>();
        }
    }
}

私は数日間苦労してきましたが、助けやサンプルをいただければ幸いです。

4

2 に答える 2

2

FNH は独自にマップしないようです。そこにオーバーライドが必要です

Map(x => x.SalesRange).CustomType<NHibernate.Type.XmlDocType>();
于 2013-07-17T08:06:22.057 に答える
0

フィーロがコメントで回答を送ってくれたので、私が代わりに回答します。

基本的にここに私がやったことがあります。

次のようにオーバーライドクラスを作成しました

using FluentNHibernate.Automapping;
using FluentNHibernate.Automapping.Alterations;
using Examples.FirstAutomappedProject.Entities;
using NHibernate.Mapping;
using NHibernate.Type;

namespace Examples.FirstAutomappedProject.Overrides
{
    public class OrderQueueOverride : IAutoMappingOverride<Product>
    {
        public void Override(AutoMapping<Product> mapping)
        {
            mapping.Map(x => x.SalesRange).CustomType<XmlDocType>();
        }
    }
}

したがって、自動マッパーはこのオーバーライドを選択し、それに応じて列をマップします。

于 2013-07-17T14:20:24.170 に答える