无法使用 LINQ 删除员工记录

问题描述 投票:0回答:2

我正在尝试使用 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;
}
asp.net linq asp.net-web-api
2个回答
0
投票

在尝试删除员工记录之前,您需要确保相关工资记录已被删除。

var salaries = _context.Salaries.Where(s => s.EmpId == id).ToList(); 
if (salaries.Any())
{
   _context.Salaries.RemoveRange(salaries);
}
_context.Employees.Remove(employee);
        
_context.SaveChanges();

0
投票

该错误意味着您无法删除工资,因为它们被数据库中的另一个表引用。 请参阅堆栈溢出:我收到错误“DELETE 语句与 REFERENCE 约束冲突”

© www.soinside.com 2019 - 2024. All rights reserved.