C# Datatable.GetErrors返回不正确的数据行

C# Datatable.GetErrors返回不正确的数据行,c#,database,datatable,dataset,enterprise-library,C#,Database,Datatable,Dataset,Enterprise Library,我使用datatable在数据库中插入记录,利用企业库的数据块 正如您将在下面的代码中看到的,我在数据集上发布了一个UpdateDataSet,然后在DataTable中查找错误,提取出有问题的datarows。我必须就这些错误记录生成一份报告 为了进行测试,我添加了一行,该行将符合数据库并被插入,添加了另一行,该行违反FK约束 DbCommand command = _database.GetStoredProcCommand("SP_Simple_Insert");

我使用datatable在数据库中插入记录,利用企业库的数据块

正如您将在下面的代码中看到的,我在数据集上发布了一个UpdateDataSet,然后在DataTable中查找错误,提取出有问题的datarows。我必须就这些错误记录生成一份报告

为了进行测试,我添加了一行,该行将符合数据库并被插入,添加了另一行,该行违反FK约束

 DbCommand command = _database.GetStoredProcCommand("SP_Simple_Insert");
            _database.AddInParameter(command, "JobID", DbType.Int32, "JobID", DataRowVersion.Current);
            ...
            ...
            ...

            int rowsaffected = _database.UpdateDataSet(dataSet, tableName, command, null, null, UpdateBehavior.Continue, batchSize); // batchsize is 1000

            LogMessage("SaveBatch", string.Format("BatchCount: {0}, AffectedRows: {1}", dataSet.Tables[0].Rows.Count, rowsaffected), Level.Info);

            if (dataSet.Tables[tableName].HasErrors)
            {
                DataRow[] rows = dataSet.Tables[tableName].GetErrors();
                LogMessage("SaveBatch", string.Format("Errors: {0}", rows.Length), Level.Debug);
            }
当我查看从GetErrors方法返回的Datarow时,它实际上是插入到数据库中的数据行

当数据集中只有错误行时,它将返回错误中正确的行


我不确定这是因为企业库还是其他原因。有一点是肯定的,这不是它应该是什么样子。

你怎么知道它是错误的一行?由于未记录调试器,您是否使用过它。同样的,批处理大小不限(0)?更新前也要检查它。批大小(0)的结果相同。在更新之前,它不会显示任何错误。还有什么我可以尝试的,或者完全不同的方法来完成同样的任务吗?