1

我是 NHibernate 的新手,并且面临 Fluent NHibernate 自动映射的一些问题。

我正在使用 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

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

因此,自动映射器将选择此覆盖并相应地映射列。

于 2013-07-17T14:20:24.170 回答