Мой проект - это веб-сайт ASP.Net MVC, который был развернут для нескольких клиентов, и у каждого клиента есть своя собственная база данных SQL Server.Как и следовало ожидать, данные в каждой базе данных разные, поэтому даже в процессе разработки у нас есть отдельные базы данных для каждого клиента.Схемы базы данных идентичны.У нас есть пользовательский контекст базы данных, расширяющий DbContext и управляемый Unity.
В настоящее время мы переключаемся между этими базами данных, либо переименовывая сами базы данных, либо редактируя строки подключения в Web.config (технически в ConnectionStrings.private.config,который мы извлекаем в Web.config с помощью атрибута configSource.
Как я могу разработать одну и ту же кодовую базу для нескольких баз данных клиентов одновременно, без редактирования какой-либо конфигурации при переключении базы данных? Например,У меня может быть один клиент на http://customerone.localhost/, а другой на http://customertwo.localhost/ (с другими номерами портов тоже все будет в порядке).Каждый получает доступ к своей собственной базе данных, но использует код c #.
В apache я могу использовать <If>
или SetEnvIf
для настройки конфигурации на основе URL, но в IIS, похоже, нет эквивалента.Когда я пытаюсь изменить его в коде c #, мне говорят, что он доступен только для чтения.
Чтобы было ясно, я не хочу, чтобы какие-либо изменения записывались обратно в web.config - я просто хочу, чтобы пользовательская строка подключения к базе данныхдля использования в течение срока действия запроса.