【问题标题】:Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. MyDataset.Tables[0].Merge无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 MyDataset.Tables[0].Merge
【发布时间】:2012-11-10 21:34:59
【问题描述】:

当我尝试在数据集中合并表时,发生此异常:- (未能启用约束。一行或多行包含违反非空、唯一或外键约束的值。)

代码:

MyDataset.Tables[0].Merge(dt, false, MissingSchemaAction.Add);

【问题讨论】:

标签: c#


【解决方案1】:

我查看了 Murat Yıldız 评论中的问题,但没有一个答案适用于我的设置。我的代码在 Merge 方法上也失败了。对我来说有效的是这个 sn-p,取自这里:http://www.codeproject.com/Tips/405938/Debugging-DataSet-Constraint-Errors

try
{
    dataSet.Merge(anotherDataSet);
}
catch (ConstraintException)
{
    foreach (DataTable table in dataSet.Tables)
    {
        DataRow[] rowErrors = table.GetErrors();

        System.Diagnostics.Debug.WriteLine(table.TableName + " Errors:" + rowErrors.Length);

        for (int i = 0; i < rowErrors.Length; i++)
        {
            System.Diagnostics.Debug.WriteLine(rowErrors[i].RowError);

            foreach (DataColumn col in rowErrors[i].GetColumnsInError())
            {
                System.Diagnostics.Debug.WriteLine(col.ColumnName + ":" + rowErrors[i].GetColumnError(col));
            }
        }
    }
}

【讨论】:

  • 非常感谢。这是获得实际错误的最佳方法。在我的情况下,它显示“无法启用 .... 外键约束 ....”,但 table.GetErrors() 显示实际原因是列的 maxLength 已被执行。
猜你喜欢
  • 2012-03-30
  • 2015-12-13
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
相关资源
最近更新 更多