DataSet, используемый ReportViewer, не использует учетные данные из ConnectionString в App.Config

У меня есть приложение Windows Forms, написанное на C #, и часть приложения имеет форму отчетности с использованием отчетов RDLC и элемента управления ReportViewer.

Чтобы создать отчеты, для каждого отчета я сначала создал DataSet и добавил TableAdapter в DataSet. Я использовал мастер TableAdapter, чтобы указать запрос для отчета, и выбрал ConnectionString, который уже был определен в App.Config и используется где-то еще в приложении.

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

Теперь пароль установлен правильно в ConnectionString в app.config в рабочей среде. Я использую эту же ConnectionString везде в приложении, в том числе для входа в систему, поэтому я знаю, что пароль sa установлен правильно.

Мне кажется, что когда я добавляю TableAdapter в DataSet с помощью мастера, и он просит меня выбрать соединение (которое я выбрал существующее соединение, которое уже было в app.config и используется где-то еще в приложении), оно должно где-то его хранить и не всегда читать из app.config. Или я что-то недопонимаю?

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

Кто-нибудь знает как это сделать?


person Jim    schedule 26.06.2012    source источник


Ответы (1)


Я взломал это, выполнив следующие действия перед вызовом метода Fill в TableAdapter ...

this.EMPLOYEETableAdapter.Connection.ConnectionString =
  ConfigurationManager.ConnectionStrings["MCLabor"].ToString();

Это работает. Это отчасти неубедительно, и это определенно доказывает, что когда вы создаете TableAdapter с помощью мастера и выбираете существующее соединение из App.Config (из раскрывающегося списка Connections в мастере), оно фактически не загружает это соединение. строка из app.config во время выполнения. Кто-нибудь знает, почему или как на самом деле с этим справиться? Мне не нравится вручную устанавливать строку подключения для каждого адаптера таблицы для каждого набора данных для каждого отчета.

person Jim    schedule 26.06.2012