【问题标题】:Fluent NHibernate AutoMap CultureInfoFluent NHibernate AutoMap CultureInfo
【发布时间】:2015-01-14 22:36:20
【问题描述】:

我有一个问题,我正在使用 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 => mapping.Map(x => x.Culture))。

有人知道如何防止这种情况吗?还是自动映射所有 CultureInfo 的?

【问题讨论】:

    标签: fluent-nhibernate fluent-nhibernate-mapping


    【解决方案1】:

    要使用 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");
        }
    }
    

    【讨论】:

    • 如何使用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多