我有一个问题,我是AutoMapping --一个具有CultureInfo属性的实体,当我试图构建SessionFactory时,它会抛出以下错误:“表ExampleClass中的关联引用未映射的类: System.Globalization.CultureInfo”
呼叫:
var configuration = new Configuration();
var sessionFactory = Fluently.Configure(configuration)
.Mappings(m =>
m.AutoMappings.Add(AutoMap.AssemblyOf<ExampleClass>(
new DefaultAutomappingConfiguration()
))
)
.BuildSessionFactory();示例类:
public class ExampleClass
{
public virtual int Id { get; set; }
public virtual int ExampleClassId { get; set; }
public virtual string LineOne { get; set; }
public virtual CultureInfo Culture { get; set; }
}如果我只是导出映射,那么它就正确地显示了映射,看起来System.Globalization.CultureInfo似乎没有包含在自动化策略中。
它在手动重写类.Override(映射=> mapping.Map(x => x.Culture))的映射时工作。
有人知道怎么防止这事吗?或者自动映射所有的文化信息?
发布于 2015-01-14 14:30:47
要使用NHibernate对CultureInfo的映射支持(请参阅https://github.com/nhibernate/nhibernate-core/blob/c85d038dce8ba87bd3f4de2458b4ef6e2497f7f8/src/NHibernate/Type/CultureInfoType.cs),您需要通过以下约定告诉Fluent NHibernate您想要使用它:
using System.Globalization;
using FluentNHibernate.Conventions;
using FluentNHibernate.Conventions.AcceptanceCriteria;
using FluentNHibernate.Conventions.Inspections;
using FluentNHibernate.Conventions.Instances;
public class CultureInfoConvention : IUserTypeConvention
{
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(n => n.Property.PropertyType == typeof(CultureInfo));
}
public void Apply(IPropertyInstance instance)
{
instance.CustomType("CultureInfo");
}
}https://stackoverflow.com/questions/27944914
复制相似问题