Собственно, такая задача. У объекта есть свойство, имеющее тип перечисления. Каким образом сохранять значение этого свойства в БД?
Навскидку видится 3 варианта разрешения проблемы:
- Сохранять в базе строковое значение элемента enum'а. В этом случае могут возникнуть проблемы, если в будущем элемент будет переименован. В базе останутся старые строковые представления.
- Сохранять целочисленное значение элемента enum'а. В этом случае проблемы возникают если в enum добавляется новый элемент, но ему присваивается значение одного из существующих (т.е. новый добавляется между двумя существующими).
- Отказаться от использования enum'а. Вместо него использовать объект с единственным свойством типа string. В отдельной таблице в базе хранить возможные значения и ссылаться на них из других таблиц. Наверное, такой способ наиболее удачен с точки зрения сохраняемости, но взамен теряются все преимущества использования перечислений в коде.
Как видно, у каждого из способов существуют свои недостатки. Может быть существуют более удачные решения?
