将已删除的行保存在数据表中,以便稍后在数据库中删除

Posted

技术标签:

【中文标题】将已删除的行保存在数据表中,以便稍后在数据库中删除【英文标题】:Saving a deleted row in a datatable to be deleted later in a database 【发布时间】:2010-11-19 04:06:12 【问题描述】:

抱歉,如果标题有点含糊不清,但我现在正在想一个好方法来做这件事。顺便说一下,我们使用的是 .NET 3.5。

示例代码:

if (ExistsInDB(dt.Rows.Find(rowID)))
     dt.Rows.Find(rowID).Delete();
else
     dt.Rows.Remove(dt.Rows.Find(rowID));

如果数据库中存在该行,则将其标记为删除。否则,将其从数据表中删除。

现在,如果我继续通过 DataRow.Delete() 方法将 DataRow 的 RowState 属性更改为 Deleted,则效果很好,除非我无法访问信息,我需要在用户点击时从数据库中删除该行“保存更改”。

我不想将行存储在另一个数据表中,因为我已经有很多其他数据表并且我不想给对象增加更多复杂性。我会在数据表上放置另一列,名称为“ToBeDeleted”或其他名称,但这些表通过网格显示在程序中。

本质上,我希望能够标记 DataTable 中的 DataRow 以便稍后在数据库中删除,而无需将 DataRow 放入 List 或向其中添加另一列。这可能吗?

【问题讨论】:

【参考方案1】:

可以通过写来获取被删除行的数据

row["ColumnName", DataRowVersion.Original]

【讨论】:

谢谢,正是我需要的:)【参考方案2】:

为什么不为此使用 DataAdapter?你可以在http://msdn.microsoft.com/en-us/library/xzb1zw3x%28v=VS.90%29.aspx了解如何做到这一点

谢谢, 瓦米普

【讨论】:

以上是关于将已删除的行保存在数据表中,以便稍后在数据库中删除的主要内容,如果未能解决你的问题,请参考以下文章

更新和删除列表视图中的行

如何将文档文件保存到 iOS 中的 SQLite 数据库,以便稍后在程序中查看它们?

sqlserver中删除表中记录的命令是

使用 EF Core 保存附加实体时如何删除子实体

C#如何清除所有外键引用,以便将删除的主键记录保存到数据库中?

如何在保存之前对Emacs中更改的行执行操作?