Имам DataGridView, който показва данни от база данни на SQL Server. Позволява на потребителя да редактира данните и да ги записва обратно в базата данни.
Начинът, по който данните се записват обратно в базата данни, е нещо подобно:
Dim da As New SqlDataAdapter
Dim cmdBuilder As New SqlCommandBuilder(da)
da.SelectCommand = New SqlCommand(sql, conn)
da.InsertCommand = cmdBuilder.GetInsertCommand
da.UpdateCommand = cmdBuilder.GetUpdateCommand
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)
da.Update(dt)
Това работи добре, когато записвам в обикновени таблици. Въпреки това искам да запазя в изглед, който има тригер ВМЕСТО, който се задейства при вмъкване, актуализиране и изтриване. Когато се опитам да използвам горното с този изглед, получавам грешката:
Динамично генериране на SQL за UpdateCommand не се поддържа срещу SelectCommand, която не връща информация за ключова колона.
Как мога да запазя в този изглед? Не искам да записвам директно в основната таблица, защото искам тригерът да се задейства.
Благодаря!
РЕДАКТИРАНЕ: Опитах също ръчно генериране на InsertCommand и UpdateCommand, но получих същата грешка.
РЕДАКТИРАНЕ 2: Оказа се, че съм сгрешил командите, когато ги генерирах ръчно. След като поправих, че работи добре - изгледът ми се актуализира и тригерът се задейства според очакванията. Предполагам, че просто не можете да генерирате автоматично командите за изглед с SqlCommandBuilder.