Я пытаюсь сопоставить свойство enum (экземпляр System.DayOfWeek) в моей модели с полем целочисленной базы данных. Другие свойства перечисления в модели должны быть сопоставлены с строками, поэтому я не хочу определять соглашение.
Я понимаю, что это должно быть возможно с использованием свободного отображения, например:
Map(x => x.DayOfWeek).CustomType<int>();
и действительно, на первый взгляд это работает.
Тем не менее, я заметил, что экземпляры объектов со свойствами, сопоставленными таким образом, обновляются каждый раз, когда сеанс очищается, хотя никаких изменений к ним не было.
Чтобы узнать, что вызывает этот флеш, я настроил IPreUpdateEventListener и проверил OldState и State объекта. См. Прикрепленное изображение. В OldState соответствующий объект является int, тогда как в State это DayOfWeek.
Если я использую XML-сопоставление HBM без указанного атрибута типа, эта проблема не возникает.
Итак...
Является ли это ошибкой или недостатком в GenericEnumMapper? Есть ли способ показать отображение FNH, чтобы не указывать какой-либо атрибут типа на сгенерированном HBM? Если нет, могу ли я указать тип по умолчанию, который NH использует для перечислений (и что это такое)?