Как или где удалить сгенерированный SQL из кода табличного адаптера?
Я разрабатывал приложение, которое использует строго типизированные наборы данных и хранимые процедуры. Я только что закончил, и это был метод, который был продан нам как путь. У меня начинаются серьезные сомнения.
Мой клиент сообщил мне, что он может перейти с SQL Server на MySQL. Из того, что я прочитал, может быть, лучше не использовать хранимые процедуры, поскольку миграция может стать более сложной. Так или иначе, я только что реализовал новый запрос адаптера таблицы с помощью мастера и выбрал Использовать операторы SQL, а не Создать новую хранимую процедуру.
Мой звонок на запрос
Intranet.administratorsDataTable dt = taAdministrators.GetAdministrators();
Теперь генерирует эту ошибку:
executereader требует открытого и доступного соединения. текущее состояние соединения закрыто
Я понятия не имею, почему этот автоматически сгенерированный код не имеет связи, и я похмелья и не в состоянии справиться с этим. Я решил просто вернуться к SP на данный момент, чтобы я мог сделать некоторую работу. Эта ошибка все еще генерируется (тот же адаптер таблицы, то же имя метода, но перенастроенный для использования SP). Все остальные мои вызовы БД работают нормально.
Я предполагаю, что сгенерированный код SQL все еще где-то плавает, хотя я изменил адаптер для использования SP. Может кто-нибудь сказать мне, где это, чтобы я мог удалить его?
С другой стороны, я действительно начинаю думать, что использование SqlConnection и SqlCommand вручную - намного лучший вариант, так как использование этих запросов "Инструменты" - это просто много проблем, когда речь идет о гибкости, такой как изменение таблиц базы данных и т. Д. Вы, более опытные люди, говорите мне, если это правильно, или вы выступаете за использование настольных адаптеров?
*Редактировать это также бросает эти:
Неверная операция. Соединение закрыто.
а также
Уже есть открытый DataReader, связанный с этой Командой, который должен быть закрыт первым.
2 ответа
Решением было перейти к свойствам запроса в tableAdapter и вручную изменить "Тип команды" на StoredProcedure.
выделите запрос> перейдите в окно свойств> измените тип команды
Похоже, что это не (или не) автоматически обновляется, когда я перенастроить запрос.
Если вы предоставите некоторый код, было бы лучше. Я думаю, вам нужно открыть соединение.
SqlCommand Cmd= new SqlCommand();
Cmd.Open();
// then u can use Cmd.ExecuteReader();