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