Я предполагаю, что вы говорите о «таблице поиска», в основном что-то, что имеет схему {Id, Name} и ссылается как внешний ключ из другой таблицы, правильно?
Это вековой вопрос, и нет «правильного» ответа.
Если ваше перечисление, скорее всего, изменится вообще (возможно, оно контролируется административным пользователем), вы не сможете использовать предложение @Andrei Rinea, так как вам нужно будет обновить значение из базы данных. В конечном счете, вам будет лучше делать то, что предлагает Keltex, и скопировать результаты с коротким сроком действия - возможно, всего за 5 минут. Просто небольшое количество кэширования может значительно повысить производительность, если вы находитесь под большой нагрузкой.
Если ваше перечисление вряд ли изменится ... в частности, если он не модифицируется через пользовательский интерфейс администратора, есть интересный трюк, который мне нравится делать, а именно сопоставление перечисления с фактическим перечислением на C# с значение enum
связано непосредственно с первичным ключом таблицы перечисления. Таким образом, вам никогда не придется ударять по базе данных, чтобы получить список возможных значений.
Недостатком этого трюка является то, что новый элемент перечисления требует новой компиляции вашего кода и нового развертывания. Это может быть или не быть идеальным, поэтому используйте трюк с осторожностью.
не очень надежный. что, если мое приложение работает очень долго, а перечисления меняются несколько чаще, чем это? – MedicineMan
Для перечислений, таких как PaymentStatus или таких, которые редко или никогда не изменяются в перечислении C#, сопоставленных с каталогом с одинаковыми численными значениями, как сказал Рэндольффо. Для кэша других в объекте HttpRuntimeCache («Кэш») и либо абсолютное истечение, либо SqlDependency –