Я думаю, це ще одне питання щодо жорсткого кодування та найкращих практик. Скажімо, у мене є список значень, скажімо, фрукти, що зберігаються в базі даних (він повинен бути в базі даних, оскільки таблиця використовується для інших цілей, таких як звіти SSRS), з ідентифікатором:
1 Apple
2 Banana
3 Grapes
Я можу представити їх користувачеві, він вибирає його, він зберігається у його профілі як FavouriteFruit та ідентифікатор, що зберігається в його записі в базі даних.
Що стосується правил бізнесу / логіки домену, які рекомендації щодо присвоєння логіки конкретним значенням. Скажіть, якщо користувач вибрав Виноград, я хочу виконати якусь додаткову задачу, який найкращий спосіб посилатися на значення Винограду:
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
чи щось інше?
Оскільки, звичайно, FavouriteFruit буде використовуватися у всій програмі, список може бути доданий або відредагований.
Хтось може вирішити, що вони хочуть, щоб "Виноград" було перейменовано на "Виноград", і це, звичайно, порушило б варіант з жорстким кодом.
Ідентифікатор з твердим кодом не зовсім зрозумілий, хоча, як показано, ви можете просто додати коментар, щоб швидко визначити, про який предмет.
Опція перерахунку передбачає дублювання даних із бази даних, що здається неправильним, оскільки може вийти із синхронізації.
У будь-якому випадку, заздалегідь дякую за будь-які коментарі чи пропозиції.
MyApplication.Grape.IDзаїкається, так би мовити "Apple" - це не "Red_Apple" більше, ніж ID 3 - це також 4. Отже, потенціал перейменування "Apple" на "Red_Apple" не має більшого сенсу, ніж заявляти, що 3 - це 4 (а може бути навіть і 3). Суть перерахунку полягає в абстрагуванні чисельної ДНК. Тож, можливо, настав час по- справжньому розв’язати довільні реляційні ключі БД, які буквально не мають сенсу в бізнес-моделях.