Нет ничего плохого в том, чтобы иметь списки статических полей, которые представляют постоянные значения;это, как вы указали, по сути то же самое, что и перечисление, и Microsoft сделала это самостоятельно в некоторых из своих собственных библиотек.
Тем не менее, если инициализация этих полей вызывает заметное замедление (и поскольку оникаждый из них попадает в базу данных, это не удивительно), есть несколько методов, которые вы можете использовать, чтобы сократить время загрузки.Очевидное решение состоит в том, чтобы использовать ленивую загрузку - другими словами, не попадайте в базу данных до тех пор, пока вам это не понадобится!Это, по сути, амортизирует стоимость попадания в базу данных для инициализации этих полей в течение всего срока службы программы, давая вам гораздо более быстрый запуск в обмен на несколько более низкую производительность в других местах.100 или 1000 из них одновременно, это тоже не может быть идеальным решением;в этом случае вы просто переместили огромную задержку, а не разбили ее.
Другая идея заключается в повышении эффективности SQL, ответственного за получение этих идентификаторов.Вы можете написать один Initialize()
метод, который выполняет один запрос, чтобы вытащить все нужные вам идентификаторы, а не делать это в 100 различных запросах.Это почти наверняка будет быстрее.