C# TableAdapter Метод вставки отсутствует

Я использую C# VS2010 TableAdapter Wizard для моего проекта для взаимодействия с моей БД. Я сгенерировал свои собственные команды вставки, обновления и удаления для этого адаптера, поскольку он использует соединение и не может генерировать свои собственные. Я в порядке с этим, но, к сожалению, когда я создал команду Вставить, я не могу вызвать метод "Вставить ()" в адаптере таблицы. Другие методы работают нормально.

Например,

`this.joinTableAdapter = new MyTableAdapter ();

this.joinTableAdapter.Insert () <- не существует.

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

Любая помощь приветствуется. Спасибо всем!

3 ответа

Решение

TableAdapter GenerateDbDirectMethods

В дополнение к InsertCommand, UpdateCommand и DeleteCommand, TableAdapters создаются с помощью методов, которые могут выполняться непосредственно в базе данных. Эти методы (TableAdapter.Insert, TableAdapter.Update и TableAdapter.Delete) могут вызываться напрямую для манипулирования данными в базе данных.

Если вы не хотите создавать эти прямые методы, присвойте свойству GenerateDbDirectMethods в TableAdapter значение false (в окне "Свойства"). Дополнительные запросы, добавленные в TableAdapter, являются автономными запросами - они не генерируют эти методы.

Вы найдете эту опцию у дизайнера на второй последней странице. Создание методов для отправки обновлений непосредственно в базу данных.

Примечание. Это не то же самое, затем нажмите "Дополнительные параметры" и нажмите:

Создание операторов вставки, обновления и удаления

При выборе этого параметра мастер попытается сгенерировать операторы INSERT, UPDATE и DELETE на основе оператора SELECT, определенного на странице "Сгенерировать операторы SQL".


Редактировать:

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

  1. Добавьте вставки, обновите и удалите запросы вручную в TableAdapter. Эти методы могут быть вызваны непосредственно из экземпляра TableAdapter (например, InsertUser(param1,param2))
  2. Добавьте команды вставки, обновления и удаления вручную в TableAdapter (дизайнер или программно). Эти команды будут вызваны неявно из адаптера таблицы при вызове Update, RowState объекта DataRow определяет, какая команда будет запущена (например, Added->InsertCommand).
  3. Выберите одну таблицу и объедините таблицы с помощью связей с другими таблицами в наборе данных

Для третьего подхода вы можете использовать LINQ-To-DataSet для объединения связанных таблиц, чтобы получить все необходимые столбцы (например, для создания DataSource для GridView).

Зайдите в набор данных, нажмите на tableadaptor и проверьте настройку для свойства "GenerateDBDirectMethods" - должно быть верно

Существует 4-й способ работы с запросами JOIN.

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

Если это слишком сокращенно, дайте мне знать. Я уточню больше.

Другие вопросы по тегам