在更新命令中,我遇到上述错误。
我试图注销所有内容,但我找不到导致问题的字段。我确实将“myoriginal”与通过SSMS从数据库中获得的值进行了比较,结果完全相同。
如何找到导致并发错误的确切字段?
我的代码用于查明错误:
public virtual int Update(global::System.Data.DataRow[] dataRows)
{
try
{
return this.Adapter.Update(dataRows);
}
catch (System.Exception ex)
{
var msg = "my little exception, " + dataRows.Length + " rows attempted to update";
foreach (var row in dataRows)
{
msg += "row has errors: " + row.HasErrors;
if (row.HasErrors)
{
msg += " descr " + row.RowError + System.Environment.NewLine;
foreach (var col in row.GetColumnsInError())
msg += " col " + row.GetColumnError(col.ColumnName);
}
{
msg += "mynewone";
msg += System.Environment.NewLine;
var columns = row.Table.Columns;
foreach (System.Data.DataColumn col in columns)
msg += col.ColumnName + "->" + row[col.ColumnName];
msg += System.Environment.NewLine;
msg += "myoriginal";
msg += System.Environment.NewLine;
foreach (System.Data.DataColumn col in columns)
msg += col.ColumnName + "->" + row[col.ColumnName, System.Data.DataRowVersion.Original];
msg += System.Environment.NewLine;
msg += "theend";
msg += System.Environment.NewLine;
}
}
throw new System.Exception(msg, ex);
}
}
第一部分(row.HasErrors) - 我希望详细说明出错的地方 - 不会产生任何输出。
我过去常常对数据库中的数据进行处理,这似乎与它应该完全一样。
答案 0 :(得分:0)
我只是记录了所有数据。事实证明我在之前的日志记录逻辑中有错误,导致我无法发现错误。 然后我在存储过程中发现一个错误,在更新后给出了错误的数据(错误,缺少“,”,两个返回值之间)。
msg += "mynewone";
msg += System.Environment.NewLine;
var columns = row.Table.Columns;
foreach (System.Data.DataColumn col in columns)
msg += col.ColumnName + "->" + row[col.ColumnName];
msg += System.Environment.NewLine;
msg += "myoriginal";
msg += System.Environment.NewLine;
try {
foreach (System.Data.DataColumn col in columns)
msg += col.ColumnName + "->" + row[col.ColumnName, System.Data.DataRowVersion.Original];
}
catch (System.Exception) {
// possible that original data does not exist - simply skip this then
}
msg += System.Environment.NewLine;