Я попытался отследить в коде FluentNHibernate именно то, почему IgnoreProperty, кажется, ломается, когда игнорируемое свойство приходит из базового класса, но истекло время.Кажется, работает нормально, если свойство get-only не исходит от базового класса.
В любом случае, решение вашей ситуации, по-видимому, заключается в создании пользовательской IAutomappingConfiguration путем наследования от DefaultAutomappingConfiguration.См. Ответ на переполнение стека: Как создать Fluent NHibernate Convention, в которой игнорируются свойства, у которых нет сеттеров .
Вот пользовательская конфигурация автоматического преобразования, которую я успешно использовал для автоматизации примера объектаВы указали:
protected class CustomConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap (Member member)
{
if (member.IsProperty && member.IsPublic && !member.CanWrite)
{
return false;
}
return base.ShouldMap(member);
}
public override bool ShouldMap(Type type)
{
return type.Namespace != null && type.Namespace.Contains("Models");
}
}
И затем его использование:
var autoMap = AutoMap
.AssemblyOf<DomainEntity>(new CustomConfiguration());
Обратите внимание, что предложение Where в вашем примере должно было перейти в пользовательский класс конфигурации, поскольку его нельзя использовать в цепочке, еслиВы используете пользовательский экземпляр конфигурации.