Я смотрю на использование Subsonic с мультитенантным веб-приложением ASP.net. Есть несколько БД (по одному на клиента / экземпляр). Пользователь входит в систему с суффиксом домена к своему имени пользователя (например, user @ tenant1, user @ tenant2).
Пользовательский поставщик членства затем определит, какую базу данных использует пользователь, и проверит ее подлинность. Все пользовательские вызовы в веб-приложении будут заключены в вызов SharedDbConnectionScope, однако у меня есть вопрос, касающийся кеширования дозвуковых элементов.
В основном каждый экземпляр будет иметь несколько записей, которые редко изменяются (параметры поиска / конфигурации). Я хотел бы прочитать их в событии Application_Start и кэшировать их в ApplicationState.
В событии Application_Start оно будет зацикливаться на каждой клиентской базе данных, использовать SharedDbConnectionScope для подключения к каждой БД и создавать эти кэшированные записи (например, Application ('tenant1_search_obj') = subsonic_object
Когда пользователь загружает страницу поиска, он затем проверяет, в каком домене находится пользователь, и затем извлекает эту опцию поиска из кэша.
Это возможно? Я просто обеспокоен тем, что если я кеширую объект, когда я извлекаю его из кеша приложения, он не будет знать, какое соединение он использует, и, возможно, получит неверные данные.
Я бы хотел по возможности не помещать это в объект сеанса.