C# 将给定数据表的所有行RowState设置为ADDED
我想知道是否有任何方法可以一次性设置属于给定DataTable的所有行的RowStatus 背景: 我正在从数据库中获取一个DataTable,现在我想将DataTable按原样推送到不同的数据库中。现在的问题是,为了使用SqlDataAdapter.Update方法将DataTable推送到新数据库,它需要添加或修改RowState。在我的例子中,我已从数据库检索到数据,因此所有行的RowState都将保持不变 解决方案: 目前,我正在更新每行状态,如下所示:C# 将给定数据表的所有行RowState设置为ADDED,c#,ado.net,C#,Ado.net,我想知道是否有任何方法可以一次性设置属于给定DataTable的所有行的RowStatus 背景: 我正在从数据库中获取一个DataTable,现在我想将DataTable按原样推送到不同的数据库中。现在的问题是,为了使用SqlDataAdapter.Update方法将DataTable推送到新数据库,它需要添加或修改RowState。在我的例子中,我已从数据库检索到数据,因此所有行的RowState都将保持不变 解决方案: 目前,我正在更新每行状态,如下所示: foreach (DataRow
foreach (DataRow row in MyDataTable.Rows)
{
row.SetAdded();
}
是否有更好的解决方案可以在表级别一次性设置所有行的状态
备选办法:[保罗建议]
使用SqlBulkCopy我可以实现这一点。但我有这个方法的问题。调用WriteToServer后,如何知道插入了多少记录?一种方法是订阅SqlRowsCopied事件并设置mySqlBulkCopy.NotifyAfter=MyDataTable.Rows.Count,但这是事件驱动的
有没有办法在调用mySqlBulkCopy.WriteToServer后立即获得插入的行数?您可以使用bulkcopy吗?例如:
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName =
"dbo.DestinationTableName";
try
{
bulkCopy.WriteToServer(sourceDataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
谢谢你的回复!我可以,但SqlBulkCopy在将记录推送到数据库时不允许行级验证。我需要在更新行时进行验证。是否在调用大容量复制之前验证内存中的行?