Update requires a valid UpdateCommand when passed DataRow collection with modified rows


This is an error, with which i was dumbfounded for weeks. The problem is simple. I have a DataSet and it automatically generates INSERT command. So i can add rows to the DataSet and update it easily. But whenever i change values in existing rows and update it via TableAdapter, I get this exception "Update requires a valid UpdateCommand when passed DataRow collection with modified rows". I found inside the generated code that only INSERT command is generated. Whatever i try, the DataSet designer would not create an UPDATE command nor a DELETE command for this TableAdapter.

Solution 1:

You can select the TableAdapter and write your own query for the update command in the property dialog box.

But this is not a good idea.

Solution 2: (Better one)

The problem lies within your table design. Check it out again and check whether you have created a primary key for the table. Mostly this will be the case, as I forgot to create one. Now after creating the primary key, you can recreate the DataSets to get the corresponding UPDATE and DELETE statements.

But if you do not want a primary key in your table, you may resort to first solution.


Cheers.

Comments

Senthil said…
Well, I was looking for something what exactly was the solution 1 you have provided...

Thanks for the useful post :)
Appia said…
Thanks from Chile!
niteskunk said…
Was having the exact same problem. Thanks so much for the easy fix!
Suncat2000 said…
Incredible. Thanks for documenting that a Primary Key was necessary for the Update and Delete methods to be generated.

I find it dumbfounding that Microsoft leaves out such critical information. Thank you for filling in the blank!
kilad said…
Fina-fuckin-lly someone with a non convoluted answer.

Thank you very much.
Mike said…
Did not fix it for me. I have a primary key (on a BIGINT) which is unique. WIth the MySqlCommandBuilder(MySqlDataAdapter).GetUpdateCommand() I have a command with a bunch of paramters. But the parameters for that command are all null. Though they have the right DataType...
Regev Porat said…
Thanks... (forgot the PK)
karthik keyan said…
Thanks a lot for your advice...working for me
Sukhada said…
Thanks it really helped a lot to fix the problem

Popular Posts

ToolTip and "Cannot access a disposed object" exception

Finding whether its Design Mode or Runtime Mode in VB.NET