我在项目中使用WPF和EF6。
我有2个表city(id_city,city_name)和person(id_person,name,id_city),person表中的id_city是FK。
示例我有2个城市C1和C2,并且1个人P1生活在城市C1中。 然后我尝试使用此代码删除C1
//I selected city C1 row in datagrid
city o = (city)cityDataGrid.SelectedCells[0].Item;
try
{
context.city.Remove(o);
context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
它显然引发了FK例外。然后我尝试像这样删除C2,尽管C2没有任何人,但它引发了FK异常。 那我该怎么做才能解决这个问题?
答案 0 :(得分:0)
使用默认设置,这将始终导致异常-人员记录的id_city字段必须指向城市表中的有效记录。
要更改此
这假设您不想仅由于删除城市而删除人记录。
答案 1 :(得分:0)
我问了一个关于DbContext
.Add()
的问题后,我得知我应该像这样更改代码:
//I selected city C1 row in datagrid
city o = (city)cityDataGrid.SelectedCells[0].Item;
using (var context = new myDbContext())
{
try
{
context.city.Remove(o);
context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
此问题的解释是Entity Framework Insert bug?