gpt4 book ai didi

fluent-nhibernate - 流利的 NHibernate AutoMap CultureInfo

转载 作者:行者123 更新时间:2023-12-04 09:00:05 26 4
gpt4 key购买 nike

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

最佳答案

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

关于fluent-nhibernate - 流利的 NHibernate AutoMap CultureInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27944914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com