На самом деле, здесь много чего плохого, наиболее очевидным из которых является нарушение принципа единственной ответственности . По сути, ваша функция должна выполнять только одну строго определенную задачу (то есть извлечь Partner
из БД).
Далее идет многопоточность. Веб-сайты по своей сути являются многопоточными, поэтому это следует учитывать. Более конкретно, элемент может быть удален из кэша между вызовами If Current.Cache(key) Is Nothing
и Return DirectCast(Current.Cache(key), Model.Partner)
. Для решения этой проблемы требуется блокировка, но это еще больше раздувает функцию (см. Первый абзац).
Кроме того, элемент может быть добавлен в кеш, пока выполняется код вашей БД. Это приведет к ошибке, поскольку Cache.Add
не перезаписывает значения одним и тем же ключом, который уже будет там (например, многопоточность).
И, наконец, я подвергаю сомнению уникальность StoreURL
.