C#中从DataView删除DataRowView且不提交更改至数据库的方法
关于DataView删除行是否触发数据库更新的问题解答
放心,你现在的操作绝对不会自动触发SQL Server数据库里的删除!原因很简单:
DataView和DataRowView都是内存中的对象,它们对应的是本地DataTable里的数据,和数据库本身没有实时绑定。你调用dR.Delete()只是在内存里给对应的DataRow打上了删除标记,并没有直接和数据库通信。- 只有当你主动调用
DataAdapter.Update()(或者TableAdapter的更新方法)这类专门提交更改的代码时,内存里的修改才会同步到数据库里。你现在只是删除内存里的行,然后重新绑定控件,完全没碰提交数据库的步骤,所以数据库里的数据一点都不会变。
甚至你都不需要额外做什么阻止操作——因为根本就不会触发数据库更改。不过可以给你提个小提醒:如果你的dvUpdatedRankings关联的DataTable后续会被用来调用Update方法,记得要么提前过滤掉这些标记为删除的行,要么在Update前确认只提交你需要的更改。
你的代码示例:
foreach (DataRowView dR in dvUpdatedRankings) { // If some logic is true, delete row if(DeleteFlag == True) { dR.Delete(); } }
内容的提问来源于stack exchange,提问作者Roni R
相关产品推荐
相关产品推荐

