Home All Groups Group Topic Archive Search About
Author
26 Jan 2006 9:51 PM
WineNCheese
Can someone please tell me how the following is possible?  When I do this:

   System.Data.DataSet addedAndModified =  myDataset.GetChanges(
DataRowState.Added | DataRowState.Modified );

some of the rows in the resulting dataset have a RowState of
DataRowState.Deleted.

Author
27 Jan 2006 12:15 AM
WineNCheese
More information below - my conclusion is this is a bug in ADO.NET.

I am using a dataset as a data cache in a winforms application.  In one of
the forms of the application, the user can perform actions which result in
the addition or deletion of rows in a table.  The user also has access to
Undo functionality.  If the user deletes a row (thus changing the RowState
to Deleted), and then performs an Undo (which recreates the row) there are
now two rows in the table with the same primary key.  One has a state of
Added, and one has a state of Deleted.   Then the user hits the save button.
In the resulting operation, I perform deletes first, followed by additions
and modifications.  For deletes, I ask for just the deleted rows using
GetChanges() and save all those changes successfully.  Then I ask for all
additions and modifications, and I get deleted rows as well in the case of
the undone deleted row.

My options currently, as I see them are:
1. Every time an undo is performed that results in a new row, remove all
rows with the same primary key that have a state of Deleted.  This results
in a problem though, because if the user performs a redo, the new row will
be deleted and moved to a detached state since it was in an inserted state.
Then, when the user goes to save, the row will not be deleted.

2. When I save additions and modifications, save on a row by row basis, and
skip the ones with Deleted state.
This seems to be my only real alternative.

Any suggestions are very welcome.


Show quote
"WineNCheese" <b***@nosuchemail.com> wrote in message
news:u3KjwKsIGHA.528@TK2MSFTNGP12.phx.gbl...
> Can someone please tell me how the following is possible?  When I do this:
>
>   System.Data.DataSet addedAndModified =  myDataset.GetChanges(
> DataRowState.Added | DataRowState.Modified );
>
> some of the rows in the resulting dataset have a RowState of
> DataRowState.Deleted.
>
Author
27 Jan 2006 12:54 AM
WineNCheese
Even Further Clarification:

DataRow.GetChanges( DataRowState.Added | DataRowState.Modified ) does not
have this problem.  Thus, it is a bug with the Dataset version of
GetChanges.  I've removed my Dataset.GetChanges calls and replaced them with
DataRow.GetChanges calls for each table, and all works fine...

Thanx to Shams Mukhatar for the suggestion of trying the DataRow version...

WNC

Show quote
"WineNCheese" <b***@nosuchemail.com> wrote in message
news:OXzGJbtIGHA.3452@TK2MSFTNGP12.phx.gbl...
> More information below - my conclusion is this is a bug in ADO.NET.
>
> I am using a dataset as a data cache in a winforms application.  In one of
> the forms of the application, the user can perform actions which result in
> the addition or deletion of rows in a table.  The user also has access to
> Undo functionality.  If the user deletes a row (thus changing the RowState
> to Deleted), and then performs an Undo (which recreates the row) there are
> now two rows in the table with the same primary key.  One has a state of
> Added, and one has a state of Deleted.   Then the user hits the save
> button. In the resulting operation, I perform deletes first, followed by
> additions and modifications.  For deletes, I ask for just the deleted rows
> using GetChanges() and save all those changes successfully.  Then I ask
> for all additions and modifications, and I get deleted rows as well in the
> case of the undone deleted row.
>
> My options currently, as I see them are:
> 1. Every time an undo is performed that results in a new row, remove all
> rows with the same primary key that have a state of Deleted.  This results
> in a problem though, because if the user performs a redo, the new row will
> be deleted and moved to a detached state since it was in an inserted
> state. Then, when the user goes to save, the row will not be deleted.
>
> 2. When I save additions and modifications, save on a row by row basis,
> and skip the ones with Deleted state.
> This seems to be my only real alternative.
>
> Any suggestions are very welcome.
>
>
> "WineNCheese" <b***@nosuchemail.com> wrote in message
> news:u3KjwKsIGHA.528@TK2MSFTNGP12.phx.gbl...
>> Can someone please tell me how the following is possible?  When I do
>> this:
>>
>>   System.Data.DataSet addedAndModified =  myDataset.GetChanges(
>> DataRowState.Added | DataRowState.Modified );
>>
>> some of the rows in the resulting dataset have a RowState of
>> DataRowState.Deleted.
>>
>
>

AddThis Social Bookmark Button