【发布时间】:2014-04-17 16:33:46
【问题描述】:
我想知道有什么方法可以一次性设置所有行的 RowStatus 属于给定的 DataTable 吗?
背景:
我正在从数据库中获取数据表,现在我想将DataTable 按原样推送到不同的数据库。现在,问题是,为了使用SqlDataAdapter.Update 方法将DataTable 推送到新数据库,它需要RowState 为Added 或Modified。就我而言,我已从数据库中检索数据,因此所有行都将具有 RowState Unchanged。
解决方案: 目前我正在更新每一行的状态,如下所示:
foreach (DataRow row in MyDataTable.Rows)
{
row.SetAdded();
}
有没有更好的解决方案,我可以在表格级别一次性设置所有行的状态?
替代方法:[保罗建议]
使用SqlBulkCopy 我可以做到这一点。但我对这种方法有疑问。一旦我打电话给WriteToServer,我怎么知道插入了多少条记录?一种方法是订阅SqlRowsCopied 事件并设置mySqlBulkCopy.NotifyAfter = MyDataTable.Rows.Count,但这是事件驱动的。
有什么方法可以在调用mySqlBulkCopy.WriteToServer()后立即获得插入的行数?
【问题讨论】: