Как или где удалить сгенерированный SQL из кода адаптера таблицы?

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

Мой клиент сообщил мне, что он может перейти с SQL Server на MySQL. Из того, что я читал, может быть лучше не использовать хранимые процедуры, так как миграция может стать более сложной. Так или иначе, я только что реализовал новый запрос адаптера таблицы с помощью мастера и выбрал Использовать операторы SQL вместо Создать новую хранимую процедуру.

Мой звонок на запрос

Intranet.administratorsDataTable dt = taAdministrators.GetAdministrators();

теперь выдает эту ошибку:

executereader требует открытого и доступного соединения. текущее состояние соединения закрыто

Я понятия не имею, почему этот автоматически сгенерированный код не имеет связи, и я с похмелья и не в состоянии справиться с этим. Я решил просто вернуться к SP на данный момент, чтобы я мог сделать некоторую работу. Эта ошибка все еще выдается (тот же адаптер таблицы, то же имя метода, но перенастроен для использования SP). Все мои другие вызовы БД работают нормально.

Я предполагаю, что сгенерированный код SQL все еще где-то плавает, хотя я изменил адаптер для использования SP. Может кто-нибудь сказать мне, где это, чтобы я мог удалить его?

С другой стороны, я действительно начинаю думать, что использование SqlConnection и SqlCommand вручную является гораздо лучшим вариантом, так как использование этих запросов «Инструменты» вызывает много проблем, когда речь идет о гибкости, такой как изменение таблиц базы данных и т. д. Может ли любой из вы, более опытные люди, скажите мне, правильно ли это, или вы выступаете за использование настольных адаптеров?

*Редактировать он также выдает следующее:

Неверная операция. Соединение закрыто.

а также

С этой командой уже связан открытый DataReader, который необходимо сначала закрыть.


person spryce    schedule 02.02.2013    source источник


Ответы (2)


Решение заключалось в том, чтобы перейти к свойствам запроса в tableAdapter и вручную изменить «Тип команды» на StoredProcedure.

выделите запрос> перейдите в окно свойств> измените тип команды

Кажется, это не обновлялось (или не обновлялось) автоматически, когда я переконфигурировал запрос.

person spryce    schedule 04.02.2013

если вы предоставите какой-то код, было бы лучше. Я думаю, вам нужно открыть соединение.

SqlCommand Cmd= new SqlCommand();
Cmd.Open();
// then u can use Cmd.ExecuteReader(); 
person Tamal Kanti Dey    schedule 02.02.2013
comment
Я должен согласиться, что, кажется, есть некоторые проблемы с подключением. Но, как я уже сказал, я создаю строго типизированные наборы данных и адаптеры таблиц с помощью мастера. Весь код подключения обрабатывается Visual Studio. - person spryce; 02.02.2013
comment
Если это помогает, вызовы выполняются настраиваемым классом RoleProvider, и, за исключением исключений, RoleProvider ведет себя так, как ожидалось. - person spryce; 02.02.2013