Skip to main content

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.
This comment has been removed by the author.
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

Featured

Rails Engine - How To Keep Your Engine Migrations Abstracted From Your Host Rails App

Have you ever worked on building a Rails Engine and wanted to keep the models, the migrations and everything inside the engine rather than using a generator to copy paste them into your host Rails App? That's a problem everybody faces one time or the other when building Rails Engines to abstract out your huge Rails App. I have found one such solutions that can be helpful for you to keep them separate. Here is a solution for it.
Problem Statement: Instead of using

    rails g my_engine:install
to copy paste the migrations from engine to your rails app, you want to just keep the migrations inside the Rails Engine and do not bother about it.
Solution:  Add the following lines to your engine, so that your engine's migration files are added to the rails app as well.

Now you can do the following from your rails app to run your migrations as you always do:

rake db:migrate
Hope it helps you! If it does help you, give me a shoutout below!

Talk to me on Twitter, Facebook, LinkedIn or Web…

Popular Posts

You will receive wonderful short stories written by him and inspirational articles once every month.