У нас вонючий код в нашем проекте. У многих значений, которые используются в бизнес-логике, есть 2 места, где они хранятся:
у нас есть словарные таблицы (используемые в отношениях FK) в БД, где мы хранили значения e.x.
MessageDirectionInfo:
0 | Unknown
1 | В
2 | Out
и у нас есть Enum с точно такими же данными:
MessageDirectionEnum {Неизвестно = 0, В = 1, Выход = 2}
И во всем коде у нас много «switch» и «if», где enum используется для условной логики. Но когда мы сохраняем в БД - мы должны «преобразовать» (что на самом деле «слепое выделение», в случае выбора точно таких же данных, кроме типа объекта результата). Перечислить значение в экземпляр класса Dictionary. Я понимаю, что Enums используется для очистки логики кода и данных БД, используемых для ссылки на внешние ключи, но на самом деле мне это не нравится.
Есть ли какой-нибудь шаблон для удаления такого поведения или какой-либо способ очистить часть этого "вонючего пути"? Или, может быть, я просто слепой, и это единственный ясный способ получить оба преимущества - базы данных FK и более понятную логику кода с перечислениями