使用外键从网格视图中删除行

时间:2013-02-19 12:00:27

标签: c# sql

我有4个表abcd,我有ab的引用,{{1 {}}到bc(通过外键)。 我正在使用网格视图来加载此表。 如果我尝试删除具有引用的值,那么它会给我一个例外:

The DELETE statement conflicted with the REFERENCE constraint 'FK__b__sc__0519C6AF'. The conflict occurred in database 'dbs', table 'dbo.b', column 'id'.
The statement has been terminated.

如果有与之关联的密钥,我不想删除该值。可以c帮忙吗?

我更新时遇到同样的问题。我正在使用网格视图提供的标准链接进行更新和删除。

任何帮助?

1 个答案:

答案 0 :(得分:0)

您可以在RowDeleted / RowUpdated事件中处理execption,因此不会将其抛给应用程序。 e.g。

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事件中执行此操作,但是这需要自定义验证来检查子表中是否存在主键,它会更容易,更快,而且我认为没有让外键完成工作并捕获异常,而不是执行检查以预先排除错误,这样做不那么麻烦。