Назначить строку подключения адаптеру таблицы из сеанса - PullRequest
1 голос
/ 13 декабря 2008

Мое приложение уже разработано, и теперь мы собираемся изменить строку подключения, независимо от того, что хранится в объекте сеанса (Bcoz распределенной системы управления базами данных (DDBMS))

Проблема здесь .....

In that application There are so many **ObjectDataSource** which are

инициализировать с помощью .XSD файл. который связан с TableAdapter и в какой строке соединения TableAdapter назначается из файла Web.Config. Теперь, как изменить соединение Строка к тому, что хранится в сессии объект

Заранее спасибо.

Ответы [ 4 ]

7 голосов
/ 14 января 2009

Чтобы изменить соединение XSD во время выполнения, вам нужно установить для свойства ConnectionModifier адаптера таблицы значение Public. Если они созданы мастером, по умолчанию они будут установлены в Friend / Internal (VB / C #).

У меня возникли проблемы с поиском свойства ConnectionModifier (его нет в моей документации vs2005)! Если щелкнуть нижнюю область XSD (там, где находятся запросы), она должна быть видна в окне свойств для изменения.

Затем вы можете установить свойство Connection (оно принимает объект, а не строку), где бы вы ни объявили адаптер таблицы.

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

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

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

Это одна из причин, по которой я ненавижу типизированные наборы данных, и на самом деле это также один из недостатков LinqToSQL (но его легче обойти).

Я думаю, что вы застряли либо регенерируете все ваши типизированные наборы данных после изменения строки подключения, либо зайдете и "настроите" их для использования строки подключения из файла web.config во время выполнения, а не копируете ее из web.config во время разработки. Если вы «настраиваете», вам придется беспокоиться о том, чтобы потерять ваш настроенный код всякий раз, когда вы вносите какие-либо изменения, которые приводят к воссозданию набора типизированных данных. Таковы плюсы / минусы.

РЕДАКТИРОВАТЬ: Я неправильно понял вопрос. Решение остается прежним, но только мое второе предложенное решение является жизнеспособным. Вам нужно будет настроить свой код TableAdapter, а затем соблюдать осторожность при его изменении при внесении изменений в набранные вами наборы данных.

0 голосов
/ 06 января 2009

У меня есть приложение winforms, у меня была похожая проблема. Я создал статический класс, который содержал мои настройки (clsGlobal), и одним из свойств была строка подключения. На странице, где я ссылался на таблицу данных, я установил для строки подключения значение clsGlobal.gstrConnectionString или свойство строки подключения. Может быть, лучше сделать это на этапе инициализации приложения. Однако настройка строки подключения tableadapter при запуске приложения из общего свойства должна помочь вам в этом.

myTableAdapter.Connection.ConnectionString = clsGlobals.gstrConnectionString;

Итак, вы просто .ToString() ваш объект сеанса и назначаете его ta.Connection.ConnectionString.

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