Изменить соединение на лету - PullRequest
2 голосов
/ 10 мая 2010

У меня есть SQL-сервер с 50 базами данных. Каждый из них имеет одинаковую схему. Я использовал удивительный Subsonic 2.2 для создания DAL на основе одного из них.

Мне нужно зациклить список имен баз данных, подключиться к каждому и выполнять обновление по одному за раз.

Если есть способ изменить, как subsonic использует строку подключения. Я считаю, что мне нужно было бы сохранить строку подключения в памяти таким образом, чтобы она могла постоянно меняться.

Возможно ли это?

Я пытался сделать

ConfigurationManager.ConnectionStrings["theConnStrName"].ConnectionString = updated-connection-string-here;

.. но это не сработало

спасибо!

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Subsonic был разработан в первую очередь только для одной базы данных. Я сделал несколько баз данных несколькими способами. Я разместил полный образец для создания поставщиков на лету на старых форумах для дозвуковых. Эти посты ушли сейчас. Что вы можете попробовать, так это настроить одного провайдера в файле конфигурации (yourProviderName) с фиктивной строкой соединения только для инициализации subsonic, а затем установить фактическую строку соединения в соответствии с требованиями вашего кода. Это работает только с одной базой данных одновременно, но я думаю, что это то, что вам нужно. Если вы хотите использовать несколько баз данных одновременно и требуют больше кода и внесения некоторых изменений в ядро ​​дозвукового 2.x.

DataProvider provider = DataService.GetInstance(yourProviderName);
foreach(string connString in connectionStrings)
{
    provider.DefaultConnectionString = connString;
    DataService.Provider = provider;
    // ... do stuff
}
1 голос
/ 11 мая 2010

Не думаю, что это легко исправить без создания поставщика SubSonic для каждой базы данных.

Вместо этого я бы поместил SubSonic-источник в качестве проекта в решение и отладил мой путь к лучшему и наиболее чистому месту для расширения кода с помощью своего рода списка словаря строк со связями и функциональности, чтобы установить тот, который вы хотите на данное время.

...