устаревший член перечисления, который хранится в базе данных - PullRequest
0 голосов
/ 13 июня 2018

У меня есть перечисление в сущности EF6, и оно сохраняется как байт в базе данных при сохранении перечисления.

Теперь я хочу пометить значение Enum как устаревшее, новсе еще будут данные, использующие это значение.Он просто не используется в коде.

Технически, я хотел бы удалить это значение в коде, но что бы вы сделали со старыми данными?

Миграция?

1 Ответ

0 голосов
/ 13 июня 2018

Рекомендуется выполнить следующие действия:

  • миграция данных: замените устаревшее значение в вашей базе данных на правильное.
  • очистка кода: удалите значение перечисленияпотому что он больше не нужен.

Если миграция данных не может быть выполнена, потому что старое значение все еще хранится в базе данных, поэтому я буду выполнять следующие шаги:

  • каждый установщик свойства или метод, который устанавливает поле из вашего перечисления, должен добавить некоторый защитный код.При установке с устаревшим значением перечисления вы генерируете исключение InvalidOperationException с явным сообщением.
  • в определении enum я добавлю XML-комментарии с <remark>, которые помогут разработчикам узнать о происходящем.
  • необязательный шаг: идти дальше, добавив пользовательский Анализатор кода для отслеживания использования этого значения.

Обратите внимание: я не украшаю значение перечисления атрибутом [Obsolete], поскольку этот атрибут означает две вещи:

  • код устарел в версии X.
  • код будет удален в версии после X: версия Y.

Эти две вещи позволяют разработчикам, использующим версию X для очисткиих фактическая база кода (полностью исключите использование устаревшего значения enum) и подготовьтесь к версии Y (никаких изменений не потребуется, поскольку вся работа выполняется при использовании версии X).Вы не можете использовать атрибут [Obsolete], потому что вы сказали, что старые данные все еще будут существовать в базе данных, поэтому вам, возможно, придется их где-то отображать, и вы не следуете двум вещам, которые я сказал об атрибуте [Obsolete].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...