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, являются автономными запросами - они не генерируют эти методы.
Вы найдете эту опцию у дизайнера на второй последней странице. Создание методов для отправки обновлений непосредственно в базу данных.
- http://msdn.microsoft.com/en-us/library/dex7k4dw%28v=vs.100%29.aspx
- http://msdn.microsoft.com/en-us/library/bz9tthwx%28v=vs.100%29.aspx
Примечание. Это не то же самое, затем нажмите "Дополнительные параметры" и нажмите:
Создание операторов вставки, обновления и удаления
При выборе этого параметра мастер попытается сгенерировать операторы INSERT, UPDATE и DELETE на основе оператора SELECT, определенного на странице "Сгенерировать операторы SQL".
Редактировать:
TableAdapter не может автоматически создавать операторы вставки, обновления и удаления, когда в основной запрос выбора включено несколько таблиц. Существует несколько подходов, если вам нужен один или несколько столбцов связанных таблиц, наилучший способ зависит от ваших требований.
- Добавьте вставки, обновите и удалите запросы вручную в TableAdapter. Эти методы могут быть вызваны непосредственно из экземпляра TableAdapter (например,
InsertUser(param1,param2)
) - Добавьте команды вставки, обновления и удаления вручную в TableAdapter (дизайнер или программно). Эти команды будут вызваны неявно из адаптера таблицы при вызове
Update
, RowState объекта DataRow определяет, какая команда будет запущена (например, Added->InsertCommand). - Выберите одну таблицу и объедините таблицы с помощью связей с другими таблицами в наборе данных
Для третьего подхода вы можете использовать LINQ-To-DataSet для объединения связанных таблиц, чтобы получить все необходимые столбцы (например, для создания DataSource для GridView).
Зайдите в набор данных, нажмите на tableadaptor и проверьте настройку для свойства "GenerateDBDirectMethods" - должно быть верно
Существует 4-й способ работы с запросами JOIN.
Для основного запроса адаптера таблицы опустите соединение. Затем вручную добавьте столбцы в таблицу данных и задайте для их SourceColumn точное написание полей, которые вы добавите. Наконец, добавьте новый запрос к адаптеру таблицы, который включает соединение, и вызовите этот запрос, чтобы заполнить таблицы данных в вашем приложении.
Если это слишком сокращенно, дайте мне знать. Я уточню больше.