Я недавно перешел на Fluent NHibernate 1.1 с 1.0, и в миграции есть некоторые критические изменения.
Например, поля в модели предметной области, такие как
public virtual string CustomerType
{
get { return /*computed value based on _Type which is a column in database */; }
}
public virtual string MemberType
{
get { return _Type; }
set { _Type = value; }
}
используется для нормальной работы без указания какой-либо конфигурации / соглашения. Теперь выдает ошибку «Не удалось найти сеттер». Я вижу решения, в которых создается переменная-член, такая как customerType или _customerType, или, если на то пошло, вставляется защищенный установщик.
Обратите внимание, что CustomerType зависит от другого значения, полученного из базы данных.
Я также видел альтернативы, такие как http://support.fluentnhibernate.org/discussions/help/269-fluentnhibernate-11-automapper-doesnt-accept-read-only-properties-anymore, где DefaultAutoMappingConfiguration переопределяется, например
public override bool ShouldMap(Member member)
{
if (member.IsProperty && !member.CanWrite)
{
return false;
}
return base.ShouldMap(member);
}
Но это означает, что другие поля с частными или защищенными сеттерами вообще пропускаются при отображении.
Я ищу решение, в котором Fluent NHibernate не ищет сеттер, если он не указан, а отображает частные / защищенные сеттеры.
Есть какие-нибудь указания, как это сделать?