删除客户时报错(无Ondelete)
来源:11-6 【重构】ORM数据管理(下)

979811597
2022-05-21
private void DeleteCustomer_Click(object sender, RoutedEventArgs e)
{
try
{
var customerId = customerList.SelectedValue;
using (var db = new AppDbContext())
{
var customerToRemove=db.Customers.Include(c=>c.Appointments).Where(c=> c.Id==(int)customerId).FirstOrDefault();
db.Customers.Remove(customerToRemove);
db.SaveChanges();
}
}
catch (Exception error)
{
MessageBox.Show(error.ToString());
}
finally
{
ShowCustomers();
}
}
代码如上。
在AppDbContext.cs文件中没有找到Ondelete,但是在删除是还是报错,即可以删除没有预约的客户,但是在删除有预约的客户的就会报异常。
异常原因如下:
SqlException: Cannot insert the value NULL into column ‘CustomerId’, table ‘master.dbo.Appointments’; column does not allow nulls. UPDATE fails.
The statement has been terminated.
打了断点,发现就是DeleteCustomer_Click内部报错。
写回答
4回答
-
慕九州232296
2022-05-21
……你的报错跟你的代码有关系吗?异常说的是不能在不允许的字段上插入null
112022-05-22 -
阿莱克斯刘
2022-06-03
hello 同学,不好意思,这个问题我遗漏了。你现在解决了吗?
00 -
慕九州232296
2022-05-22
至于你贴出来的代码,存在的问题是,客户表与预约表存在外键关联,因此在删除客户之前要先把该客户对应的预约数据全部删掉,然后再去删除客户,就好了
012022-05-22 -
慕九州232296
2022-05-22
以你的报错来说的话,你插入数据的时候,非空字段要加上数据就可以了,也就是你在添加预约的时候,没有把customerId带上,你带上后再添加预约问题提就解决了
012022-05-22
相似问题