Свободный NHibernate - соглашение о применении пользовательского типа - PullRequest
2 голосов
/ 20 августа 2011

Я использую Fluent NHibernate (Auto Mapping) для сопоставления объектов моего домена с таблицами базы данных. Я создал свой собственный класс Date, который я отображаю с помощью DateTranslator - реализации IUserType NHibernate.

public class MyDomainObject : DomainObject
{
    public Date Date { get; set; }
}

public class MyDomainObjectMappingOverride : IAutoMappingOverride<MyDomainObject>
{
    public void Override(AutoMapping<MyDomainObject> mapping)
    {
        mapping.Map(x => x.Date).CustomType(typeof(DateTranslator));
    }
}

Как видите, я создал переопределение сопоставления для этого объекта домена, чтобы я мог указать пользовательский тип, который должен использоваться для сопоставления свойства 'Date'.

Теперь - это означает, что мне придется создать переопределение сопоставления для всех объектов домена, которые содержат свойство типа «Дата».

Я бы хотел использовать здесь соглашение, чтобы «DateTranslator» использовался для отображения всех свойств типа «Дата», но я не смог его выяснить.

Любая помощь с этим будет принята с благодарностью.

1 Ответ

2 голосов
/ 22 августа 2011
public class MyUsertypeConvention : IPropertyConvention
{
    public void Apply(IPropertyInstance instance)
    {
        if (instance.Type.Name == "Date")
        //or
        //if (instance.Type.GetUnderlyingSystemType() == typeof(Date))
            instance.CustomType<DateTranslator>();
    }
}

и конфигурации, например,

FluentMappings.Conventions.Add(new MyUsertypeConvention())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...