我是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>();
}
}
}
我已经苦苦挣扎了几天,现在无法帮助或者样品会非常感激。
答案 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>();
}
}
}
因此,自动映射器将选择此覆盖并按比例映射列。