Для обновления Visual Studio VB требуется действительная команда UpdateCommand при передаче коллекции DataRow с измененными строками

#vb.net #visual-studio-2019

#vb.net #visual-studio-2019

Вопрос:

У меня есть кнопка обновления и код

 Private Sub txtSave_Click(sender As Object, e As EventArgs) Handles txtSave.Click
        Me.Validate()
        Me.TrackingBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.InventoryDataSet)
        MsgBox("Record Update")
End Sub
  

При запуске я получил сообщение об ошибке

 System.InvalidOperationException: 'Update requires a valid UpdateCommand when passed DataRow collection with modified rows.'
  

Не уверен, что я что-то пропустил в записях обновления. Спасибо

Ответ №1:

Когда вы создаете типизированную таблицу DataSet из базы данных, мастер генерирует DataTable и табличный адаптер для каждой таблицы базы данных. DataTable Схема основана на схеме таблицы, как и SQL в командах адаптера таблицы.

SelectCommand Содержит SELECT инструкцию, которая извлекает все столбцы всех строк и выполняется при вашем вызове Fill . Инструкции InsertCommand , UpdateCommand и DeleteCommand содержат INSERT , UPDATE и DELETE Update , соответственно, и выполняются по мере необходимости при вашем вызове, когда вы вызываете.,,

SelectCommand и InsertCommand Всегда могут быть сгенерированы, потому что все, что им нужно знать, это имя и тип данных каждого столбца. инструкции UPDATE and DELETE должны иметь возможность идентифицировать конкретную запись для обновления или удаления, и они делают это, указывая значение первичного ключа в WHERE предложении. Если ваша таблица базы данных не имеет первичного ключа, то этот SQL не может быть сгенерирован, и ваш табличный адаптер не будет иметь UpdateCommand or DeleteCommand .

Что вам нужно сделать, так это убедиться, что все таблицы вашей базы данных имеют первичный ключ. Может быть допустимо иметь таблицу без PK, но это очень редко. Как только в вашей таблице появится PK, вы можете повторно запустить мастер источника данных для обновления введенного DataSet . Для этого на панели инструментов в окне Источники данных есть кнопка.

Комментарии:

1. Спасибо. Необходимо хорошо знать о первичном ключе.