我想知道有没有办法将所有行的RowStatus一次性设置为给定的DataTable?
背景
我从数据库中获取DataTable,现在我想将DataTable
原样推送到不同的数据库。现在,问题是,为了使用DataTable
。更新方法将SqlDataAdapter
推送到新数据库,它需要RowState
为Added
或Modified
。在我的情况下,我已从数据库中检索数据,因此所有行都将具有RowState Unchanged
。
解决方案: 目前我正在更新每个行状态,如下所示:
foreach (DataRow row in MyDataTable.Rows)
{
row.SetAdded();
}
有没有更好的解决方案,我可以在桌面级别一次性设置所有行状态?
替代方法: [由保罗建议]
使用SqlBulkCopy
我可以做到这一点。但我有这个方法的问题。一旦我拨打WriteToServer
,我怎么知道插入了多少条记录?一种方法是订阅SqlRowsCopied
事件并设置mySqlBulkCopy.NotifyAfter = MyDataTable.Rows.Count
,但这是事件驱动的。
有没有办法在调用 mySqlBulkCopy.WriteToServer()
后立即插入行数?
答案 0 :(得分:0)
你能使用批量复制吗?如:
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName =
"dbo.DestinationTableName";
try
{
bulkCopy.WriteToServer(sourceDataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}