Изменение XSD ConnectionString во время выполнения для приложения с несколькими арендаторами - PullRequest
8 голосов
/ 12 января 2009

Я меняю наше приложение с «один набор кода и одна база данных» на «один набор кода для нескольких баз данных (одна база данных на клиента)».

Исходный код - VS2005 ASP.NET (VB) и множество XSD в отдельной DLL. ConnectionString файла web.config переопределяет тот, который хранится в DLL во время выполнения.

Теперь мне нужно изменять ConnectionString каждый раз, когда я объявляю Адаптер данных / Набор данных / таблицу, потому что вызов может идти в базу данных, отличную от последнего вызова.

У кого-нибудь есть намеки на это?

Ответы [ 2 ]

6 голосов
/ 12 января 2009

После небольшого исследования кажется, что у XSD есть свойство ConnectionModifier.

Чтобы найти его на диаграмме XSD, щелкните часть схемы TableAdapter (где определены запросы).

В окне свойств измените ConnectionModifier на Public и нажмите Сохранить. (Кажется, это также меняет свойство для всех наборов данных на этой странице.)

Вернувшись в основной код вашего сайта, вы теперь можете сделать что-то вроде этого:

'declare the adapter as normal
Dim AdapterTest As New DataSetTestTableAdapters.TestTableAdapter

'pass the new connection object into the now visible property
AdapterTest.Connection = New Data.SqlClient.SqlConnection("Data Source=Myserver;Initial Catalog=TEST;Integrated Security=True;")

Требуется только объект подключения.

Мне еще предстоит пройти это надлежащее испытание! К сожалению, новый объект соединения будет передаваться каждый раз, когда вы объявляете что-то из XSD.

1 голос
/ 27 января 2009

Также было обнаружено, что хотя упомянутое свойство (ConnectionModifier) ​​является Public, его все равно нельзя увидеть с помощью кода, если оно является QueriesTableAdapter. Поэтому мне пришлось потратить немало времени на их удаление и замену обычным блоком «Использование запроса».

Кроме того, я уверен, что проект кажется быстрее. Это может быть уменьшение размера или использование «использования» во всех вызовах (исходный код был в начале наших дней .NET, поэтому, во-первых, его можно было написать лучше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...