0

我有 4 个表a, b, cd并且我有来自ato bbtoccto的引用d(通过外键)。我正在使用网格视图来加载此表。如果我尝试删除具有引用的值,那么它会给我一个例外:

DELETE 语句与 REFERENCE 约束“FK__b__sc__0519C6AF”冲突。冲突发生在数据库“dbs”、表“dbo.b”、列“id”中。
该语句已终止。

如果有与之关联的键,我不想删除该值。可以 GridViewSim_RowDeleting()帮忙吗?

我更新的时候也有同样的问题。我正在使用网格视图提供的标准链接来更新和删除。

有什么帮助吗?

4

1 回答 1

0

您可以处理RowDeleted/RowUpdated事件中的执行,因此它不会被抛出到应用程序。例如

void GridViewSim_RowDeleted(Object sender, GridViewDeletedEventArgs e)
{
    if(e.Exception == null)
    {
        //Delete was successful - Do Something
    }
    else
    {
      // Delete was not successful - Do something else
      e.ExceptionHandled = true;   
    }
}

您也可以RowDeleting按照您所说的那样在事件中执行此操作,但这需要自定义验证以检查主键是否存在于子表中,这将更容易和更快,并且在我看来让外键做同样混乱他们的工作并捕获异常,而不是执行检查以先发制人的错误。

于 2013-02-19T12:52:03.840 回答