【问题标题】:Deleting DataRowView from a DataView C# and not committing changes to DB从 DataView C# 中删除 DataRowView 并且不将更改提交到 DB
【发布时间】:2018-11-09 14:59:26
【问题描述】:

我正在遍历 DataView。如果我不想要基于预定义条件的行,我将删除它。遍历整个 DataView 后,我想将此更新的 DataView 绑定回控件,但不将更改提交到 SQL Server 数据库表。这会自动触发实际 sql server 表中的删除吗?如果是这样,我该如何阻止这种情况发生。

 foreach (DataRowView dR in dvUpdatedRankings)
 {
     // If some logic is true, delete row
     if(DeleteFlag == True)
     {
         dR.Delete();
     }

 }

【问题讨论】:

  • 当您使用dR 作为从dvUpdatedRankings 中选择的对象时,您将无法从循环内部删除。您需要将它们添加到 DataRowView 对象列表中,然后对其进行迭代以将它们从 dvUpdatedRankings 中删除
  • DataView如何链接到sql server?
  • 谢谢亚历克斯。一旦它们从 DataView 中正确删除,它们是否会自动从 SQL 数据库表中删除?这是我更关心的。我只想更新 DataView 而不会影响实际的 SQL 表。
  • @SamuelAC 我正在使用 SqlDataAdapter 填充 DataSet,然后从 DataSet 创建一个 DataView。

标签: c# sql-server datatable dataview datarowview


【解决方案1】:

从数据集中删除行后,调用 dataset.Acceptchanges()。 这将从数据集中删除标记为“to_be_deleted”的行。

【讨论】:

    【解决方案2】:

    dataview 与 sql server db 没有任何关系。它只是作为保存从 db 获取的值的持有者,对其进行的任何修改都只会驻留在服务器内存中,直到对象的范围丢失。因此 db 不会改变。

    这就像一种单向通信..您将数据从 db 获取到 DataView。并且连接已关闭,现在 db 和 Dataview 是两个独立的东西!

    【讨论】:

    • 感谢塞缪尔的回复。非常感谢
    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2012-09-02
    • 1970-01-01
    • 2018-09-12
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多