Вы не должны использовать FindMapping
для этой цели. Возможность изменять сопоставления с помощью этого метода является упущением, и на него определенно не следует полагаться. Этот метод предназначен для проверки модели постоянства, а не для ее изменения. Если вы используете autopping, вы должны изучить overrides .
Я полагаю, что ваша проблема может быть решена с помощью ICompositeUserType
реализации; Есть несколько ресурсов, доступных онлайн, о том, как их реализовать, в частности, универсальная реализация составного пользовательского типа . Вы бы просто отобразили свое свойство range как нормальное, но указали для него тип пользователя, используя CustomType
.
Map(x => x.Range)
.CustomType<RangeUserType>();
Вы также можете сделать это с недавно представленной функциональностью ComponentMap
, но она не поддерживает отображение универсальных типов open без использования базовых классов.
Что-то вроде этого, вероятно, будет работать:
public abstract class RangeMap<T> : ComponentMap<T>
{
protected RangeMap()
{
Map(x => x.Start);
Map(x => x.Finish):
}
}
public class IntRangeMap : RangeMap<int>
{}
public class DateRangeMap : RangeMap<DateTime>
{}
Правда, это не идеально.