Как разделить перечисления между базой данных и приложением? - PullRequest
0 голосов
/ 09 мая 2019

Как я могу разделить перечисления между приложением веб-сайта и базой данных?Например, если у меня есть таблица TYPE, подобная этой:

id |name

1 type1

2 type2

и перечисление:

enum Type {
    type1 = 1,
    type2 = 2
}

есть способ автоматически связать оба, например, когда база данныхпусто, приложение должно добавить эти две строки, чтобы перечисление, используемое в приложении, соответствовало типу, используемому в БД.Я хочу сделать это, потому что в БД product может иметь тип furniture (поэтому type_id из product ссылается на тип furniture в таблице TYPE), но я также хочубыть в состоянии сделать что-то вроде

if (type === Type.furniture) {
    // ...
}

непосредственно из логики приложения (например, для изменения внешнего интерфейса в зависимости от типа).Это довольно распространенная проблема, так как бы вы справились?Есть ли другой способ, кроме того, чтобы вручную убедиться, что оба совпадения?

1 Ответ

0 голосов
/ 09 мая 2019

Используете ли вы какой-либо ORM? Если да, то это подход на основе кода или на основе базы данных?

Я знаю, что вы можете сделать что-то подобное, используя C # + EFcore. Вы должны использовать метод HasData () ModelBuilder. Рабочий процесс для достижения вашей цели будет следующим: собрать всех членов вашего перечисления и заполнить ими таблицу БД. Если вы не используете EFcore и C #, я думаю, что вы можете использовать аналогичный подход к вашей проблеме, найдя соответствующий метод заполнения вашего ORM и подходящий способ извлечь всех членов вашего перечисления. Для второй части вашей проблемы вам нужно будет напрямую отредактировать файл, в котором хранится ваше перечисление.

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