gpt4 book ai didi

c# - 加载DataSet时什么会触发ConstraintException?

转载 作者:IT王子 更新时间:2023-10-29 04:08:10 30 4
gpt4 key购买 nike

如何找出违反约束的列和值?异常消息根本没有帮助:

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

最佳答案

像许多人一样,我有自己的标准数据访问组件,其中包括返回 DataSet 的方法。当然,如果抛出 ConstraintException,DataSet 不会返回给调用者,因此调用者无法检查行错误。

我所做的是在此类方法中捕获并重新抛出 ConstraintException,记录行错误详细信息,如以下示例(使用 Log4Net 进行日志记录):

...
try
{
adapter.Fill(dataTable); // or dataSet
}
catch (ConstraintException)
{
LogErrors(dataTable);
throw;
}
...

private static void LogErrors(DataSet dataSet)
{
foreach (DataTable dataTable in dataSet.Tables)
{
LogErrors(dataTable);
}
}

private static void LogErrors(DataTable dataTable)
{
if (!dataTable.HasErrors) return;
StringBuilder sb = new StringBuilder();
sb.AppendFormat(
CultureInfo.CurrentCulture,
"ConstraintException while filling {0}",
dataTable.TableName);
DataRow[] errorRows = dataTable.GetErrors();
for (int i = 0; (i < MAX_ERRORS_TO_LOG) && (i < errorRows.Length); i++)
{
sb.AppendLine();
sb.Append(errorRows[i].RowError);
}
_logger.Error(sb.ToString());
}

关于c# - 加载DataSet时什么会触发ConstraintException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/140161/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com