C# 如何显式更改ADO.Net数据行的行状态?

C# 如何显式更改ADO.Net数据行的行状态?,c#,ado.net,C#,Ado.net,给定ADO.Net数据行,如何将行的行状态从添加的更改为修改的或删除的 我尝试直接设置属性: myDataSet.Tables[0].Rows[0].RowState = DataViewRowState.ModifiedOriginal; 导致编译器发出以下错误消息: error CS0200: Property or indexer 'DataRow.RowState' cannot be assigned to -- it is read only 虽然有一些方法可以显式设置RowSt

给定ADO.Net
数据行
,如何将行的行状态从
添加的
更改为
修改的
删除的

我尝试直接设置属性:

myDataSet.Tables[0].Rows[0].RowState = DataViewRowState.ModifiedOriginal;
导致编译器发出以下错误消息:

error CS0200: Property or indexer 'DataRow.RowState' cannot be assigned to -- it is read only

虽然有一些方法可以显式设置
RowState
属性,如
SetAdded
SetModified
Delete
,但我认为最好能理解自动执行的确切操作

如果需要将
RowState
设置为unchanged,则调用行上的
AcceptChanges
,然后从那里开始。如果您需要它处于修改状态,而它当前不是,则很有可能您应该在
DataRow
DataTable
逻辑中的其他地方调用
AcceptChanges
——这样,当您通过以下代码对行进行修改时:

row["field"] = "New Value";
它将
RowState
更改为
Modified
,但现在它还有一个基线,即
原始
行状态,因为您以前已经接受了更改


我的观点是,是的,您可以使用其中一些方法显式地设置
行状态,但我觉得您可能只需要更像预期那样使用ADO.NET接口。

为什么我否决了这个问题:您尝试过什么吗?先表现出你的努力。。请阅读并重复几次.-1不管是什么问题,不工作都是对问题的绝对可怕的描述。使用
行[0]。SetAdded()
行[0]。SetModified()
行[0]。Delete()
这个问题是一个非常好的例子,说明了对一个有用的、可回答的问题进行过度激进的关闭。一位具有专业知识的人认识到了这个问题,并提供了一个可能帮助了几千人的回复。提示询问者提供更多细节的评论就足够了。投票否决和投票结束对任何人都没有帮助。