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

时间:2012-12-05 22:12:15

标签: c# database datatable dataset enterprise-library

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

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

为了进行测试,我添加了一行符合数据库并插入的行,添加了另一行违反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 个答案:

没有答案