我在强类型数据集中的 DataTable 中添加了几行,并使用 TableAdapterManager 将更改插入到我的数据库中。使用 TableAdapterManager 的 UpdateAll 函数会导致所有插入行的数据库回滚失败。不幸的是,DataTable.RejectChanges 不会“回滚”DataTable 中的相同行。在对 DataTable.RejectChanges 方法的调用中,仅从 DataTable 中删除最后一行。我希望 DataSet 具有与数据库相同的状态。
不是 MSDN 文档中的 RejectChanges 会删除所有新的(未提交的)行吗?难道我做错了什么?
我的代码:
foreach (var item in List)
{
DataSet.customerRow custRow = ds.customer.NewcustomerRow();
custRow.name = item.Name;
try
{
ds.customer.AddcustomerRow(custRow);
}
catch (Exception ex)
{
ProcessException(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
valid=false;
}
}
if (valid)
{
DataSetTableAdapters.TableAdapterManager adapterManager = new DataSetTableAdapters.TableAdapterManager();
adapterManager.customerTableAdapter = new DataSetTableAdapters.customerTableAdapter();
try
{
retryPolicy.ExecuteAction(() =>
{
adapterManager.UpdateAll(ds);
});
}
catch (Exception ex)
{
ds.customer.RejectChanges();
}
}
else
{
ds.customer.RejectChanges();
}