如何操作DataSet中的原始版本字段值

时间:2015-09-15 11:06:24

标签: .net ado.net

如何操作在DataSet行中写入原始值?

为什么我需要这样做?

我需要这样做,因为新版本的数据库已经改变了它的结构。但是,仍有客户在那里发送带有旧结构的DataSet。所以我动态添加了必填字段,并根据需要设置了它们的值。然后,我应该像往常一样使用DataAdapter更新数据库。

为了使DELETE操作有效,我应该能够在DataSet中设置主键字段的原始版本,因为DataAdapter使用原始版本来构造Delete命令的参数值。

然而,我还没有找到任何办法。以下代码甚至无法编译:

ds.Tables["Table"].Rows[0]["NewField",  DataRowVersion.Original]=23;

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

更改现有数据库表架构重命名/复制表,并执行与新表兼容的应用程序更改,并在没有站点上的流量更新新表时使用原始表插入数据与主键进行后台操作。

执行此操作后原始数据进入更改表再次使代码生效并将更改的表重命名为原始表。我希望这可行。

答案 1 :(得分:0)

调用DataTable.AcceptChanges()方法,这使得Current / Proposed版本为Original版本。希望它适合你。

<强> 1。更新:我能够通过以下步骤获得

  • 使用与原始模式相同的模式创建新数据表(例如dt2) 数据表(比如说dt1)+新的标识栏
  • 用原版填充dt2 来自dt1的值,也根据需要填充新的列值
  • 在dt2(新数据表)
  • 上调用接受更改
  • 现在将dt1当前值复制到dt2

因此,您既有当前值,也有原始值,包括新列的原始值。

我做了一小段代码,如果需要可以共享,但逻辑很简单。