В нашей системе мы используем nhibernate для отображения объектов в базу данных. В одном из наших объектов мы имеем поле, которое представлено в виде перечисления (перечисление с ключом и значением, феnumernate map enum pair (key-value)
public enum Status
{
Draft = 0,
Archived = 1,
Imported = 2
}
)
Таким образом, в нашем приложении мы столкнулись с проблемой сортировки объектов с тем, что поле, которое представлено перечислением: сортировка производится не ключом перечисления, а значением. Для фиксации этой проблемы мы создали addtive поле в базе данных для строки ключа перечисления и внесены изменения в nhibenate файл модель:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<typedef name="StatusName" class="NHibernate.Type.EnumStringType`1[[Code.Model.Status, Code.Model]], NHibernate" />
...
<property name="Status" type="StatusName" column="StatusName" not-null="true" />
...
После этого изменения сортировки начали работать правильно в приложении (записи сортируются по ключу перечислений), но после того, как для создания новых объектов в базе данных сохраняется значение только для ключа enum (поле StatusName), а для значения enum (поле состояния) оно не сохраняется.
Есть ли способ сопоставить ключ и значение перечислимого числа в столбцах базы данных (столбцы состояния и состояния) с помощью конфигураций nhibernate?