2015-01-14 5 views
3

У меня есть проблема, когда я автоматически создаю объект с свойством CultureInfo, когда я пытаюсь построить SessionFactory, он выдает исключение со следующей ошибкой: «Ассоциация из таблицы ExampleClass относится к классу unmapped: System.Globalization.CultureInfo»Fluent NHibernate AutoMap 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 не включено в стратегию автопилота.

Он работает, когда вручную переопределяет отображение для класса. Вернуть (mapping => mapping.Map (x => x.Culture)).

Кто-нибудь знает, как предотвратить это? Или автоматически отобразить все объекты CultureInfo?

ответ

3

Чтобы использовать поддержку отображения 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"); 
    } 
} 
+0

Как я могу использовать Это? –

Смежные вопросы