无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#

Posted

技术标签:

【中文标题】无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#【英文标题】:Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. asp.net c# 【发布时间】:2014-09-04 08:20:44 【问题描述】:

我必须从两个文本框中获取开始日期和结束日期,并根据该日期从数据库中获取数据并显示到网格视图中。

protected void Button1_Click(object sender, EventArgs e)
    
    String str = DateTime.Now.ToString(TextBox1.Text);
    DateTime tm = Convert.ToDateTime(str);
    String str2 = DateTime.Now.ToString(TextBox2.Text);
    DateTime tm2 = Convert.ToDateTime(str2);

    solarDataSet2TableAdapters.tbl_energy_reportTableAdapter state;
    state = new solarDataSet2TableAdapters.tbl_energy_reportTableAdapter();

    DataTable dt = new DataTable();  
    dt = state.GetGridDataBy(DropDownList1.SelectedValue,DropDownList2.SelectedValue,  

    str, str2);  // Failed to enable constraints. One or more rows contain values  
    //violating non-null, unique, or foreign-key constraints. asp.net c#  

    GridView1.DataSource = dt;
    GridView1.DataBind();

【问题讨论】:

您必须调试才能找到错误的实际原因。在dt = state.GetGridDataBy... 处设置断点。在调试器的quick-watch-window 中执行这一行。之后在快速观察窗口中执行dt.GetErrors() 并查看每一行的RowError-property。在那里你会找到它。 @TimSchmelter :我已经完成了上述步骤。在 dt 上放置一个断点并运行快速监视窗口。数据集可视化工具不显示表格。我应该在哪里应用 dt.GetErrors() 方法? 我不知道我可以在上面的评论中添加什么以使其更清楚。你不明白什么?在调试器中执行dt=state.GetGridDataBy(DropDownList1.SelectedValue,DropDownList2.SelectedValue, str, str2);。您将在调试器窗口中看到约束异常。然后在快速观察对话框中执行dt.GetErrors()。结果,您将获得所有有错误的行。您会在每一行的RowError 属性中找到有意义的错误消息(也在调试器的快速查看对话框中)。现在清楚了吗? @TimSchmelter 谢谢。 那么你让它工作了吗?真正的问题是什么? 【参考方案1】:

按照下面给出的步骤:

这实际上对我有用,希望你也能清楚。

    进入数据集,复制GetGridDataBy的查询。 现在返回主数据集窗口并从列表中删除 GetGridDataBy 查询。 现在添加新查询并粘贴您从之前的GetGridDataBy 查询中复制的查询详细信息。 现在将其命名为 GetGridDataBy2 将后面代码中的所有GetGridDataBy 替换为GetGridDataBy2。 然后运行。

有时由于自动生成签名代码时出现故障而发生此错误。此步骤将帮助您解决此问题。万事如意!

【讨论】:

以上是关于无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。 ASP.NET C#的主要内容,如果未能解决你的问题,请参考以下文章

主键约束

MySQL约束 主键约束丨唯一约束丨非空约束丨外键级联

ORA-02292违反完整约束和ORA-02297无法禁用约束条件 cascade禁用主键

Laravel 迁移 - 违反完整性约束:1452 无法添加或更新子行:外键约束失败

创建表时约束

Laravel 6:违反完整性约束:1452无法添加或更新子行:外键约束失败