【发布时间】:2015-05-29 16:19:48
【问题描述】:
我认为这有一个非常简单的答案。我是实体框架的新手,我正在创建一个包含 Contacts 和 Groups 作为对象/实体的测试应用程序。
这是我删除组的代码:
private void button_DeleteGroup_Click(object sender, EventArgs e)
{
var _selectedGroup = dataGridView_Groups.SelectedRows[0].DataBoundItem as Group;
try
{
cgContext.Groups.Remove(_selectedGroup);
cgContext.SaveChanges();
PopulateGroupGrid();
MessageBox.Show("Successfully deleted group from database!");
}
catch(Exception ex) { MessageBox.Show("Failed to delete group from database.\r\n\r\n" + ex); }
}
如果我删除联系人所属的组,以测试参照完整性,则会引发异常(应该如此):
"DELETE 语句与 REFERENCE 约束冲突 “FK_dbo.Contacts_dbo.Groups_Group_Id”。冲突发生在 数据库“ContactGroups”,表“dbo.Contacts”,列 'Group_Id'。声明已终止。”
然后我捕获这个异常并向用户显示一条消息。如果我然后去添加一个新的组或联系人或做任何事情,事务将失败并出现与以前相同的异常:
"DELETE 语句与 REFERENCE 约束冲突 “FK_dbo.Contacts_dbo.Groups_Group_Id”。冲突发生在 数据库“ContactGroups”,表“dbo.Contacts”,列 'Group_Id'。声明已终止。”
所以,当初始异常发生时,显然我没有清除/结束事务或其他东西。我做错了什么或错过了什么?
【问题讨论】:
标签: c# entity-framework