我正在尝试使用 asp.net web Api 中的 LINQ 根据主键 EmpId(EmpId 也是表 Salary 的外键)从 Employee 表中删除一条记录。但我收到一个错误:SQL 异常:
DELETE 语句与 REFERENCE 约束“FK__Salary__EmpId__3B75D760”冲突。冲突发生在数据库“CRUDWithLINQ”,表“db.Salary”,列“EmpId”中。
请帮帮我。
public bool DeleteEmployee(int id)
{
var employee = (from Employee
in _context.Employees
where Employee.EmpId == id
select Employee).FirstOrDefault();
if (employee == null)
{
return false;
}
var salaries = (from Salary in _context.Salaries//Salaries is entity for Salary
where Salary.EmpId == id
select Salary).FirstOrDefault();
var salaries = _context.Salaries.Where(s => s.EmpId == id);
_context.Salaries.RemoveRange(salaries);
_context.Employees.Remove(employee);
_context.SaveChanges();
return true;
}
在尝试删除员工记录之前,您需要确保相关工资记录已被删除。
var salaries = _context.Salaries.Where(s => s.EmpId == id).ToList();
if (salaries.Any())
{
_context.Salaries.RemoveRange(salaries);
}
_context.Employees.Remove(employee);
_context.SaveChanges();
该错误意味着您无法删除工资,因为它们被数据库中的另一个表引用。 请参阅堆栈溢出:我收到错误“DELETE 语句与 REFERENCE 约束冲突”