映射XmlDocument列时流畅的NHibernate Automap错误

时间:2013-07-17 05:46:04

标签: nhibernate fluent-nhibernate xmldocument

我是NHibernate的新手,面对Fluent NHibernate自动化的一些问题。

我正在使用Nhibernate 3.3.3.400,Fluent Nhibernate 1.3.0.733 Automapper 2.2.1

我在Database中有一个Xml类型的列。当我尝试创建ma映射列时,它会给我以下错误。

表中的关联产品是指未映射的类: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>();
        }
    }
}

我已经苦苦挣扎了几天,现在无法帮助或者样品会非常感激。

2 个答案:

答案 0 :(得分:2)

似乎FNH不会将它映射到它自己。你需要覆盖那里

Map(x => x.SalesRange).CustomType<NHibernate.Type.XmlDocType>();

答案 1 :(得分:0)

自从Firo发表评论后,我代表他回答了这个问题。

基本上这就是我最终做的事情。

我创建了一个覆盖类,如下所示

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>();
        }
    }
}

因此,自动映射器将选择此覆盖并按比例映射列。