C # TableAdapter Метод вставки отсутствует - PullRequest
1 голос
/ 19 января 2012

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

Например,

`this.joinTableAdapter = new MyTableAdapter ();

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

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

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

Ответы [ 3 ]

1 голос
/ 19 января 2012

TableAdapter GenerateDbDirectMethods

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

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

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

Примечание : это не то же самое, затем нажмите «Дополнительные параметры» и нажмите:

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

Когда вы выбираете эту опцию, мастер попытается сгенерировать операторы INSERT, UPDATE и DELETE на основе инструкции SELECT, определенной на странице «Формирование операторов SQL».


Edit:

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

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

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

0 голосов
/ 25 мая 2017

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

0 голосов
/ 20 августа 2015

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

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

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

...