두 개의 테이블은 다음과 같이 관련되어 있습니다. 사용자를 삭제하면 사용자 만 삭제되고 나에게 잘 돌아갑니다. 급여를 삭제하면이 레코드와 관련된 모든 사용자가 삭제됩니다. 나는 급여만을 삭제하고 싶다.데이터 삭제 관련 문제
class Employee
{
[Key]
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[Range(00000000000.00, 999999999999.00, ErrorMessage = "Amount must be between 00000000000.00 and 999999999999.00")]
public decimal Phone { get; set; }
public int SalaryId { get; set; }
public virtual Salary Salary { get; set; }
}
class Salary
{
[Key]
public int SalaryId { get; set; }
public string Name { get; set; }
[Range(0.01, 100000000.00, ErrorMessage = "Amount must be between 0.01 and 100000000.00")]
public decimal Amount { get; set; }
}
private void DelEmp()
{
if (abort)
return;
else
{
int selectedRows = dgv1.Rows.GetRowCount(DataGridViewElementStates.Selected);
for (int i = 0; i < selectedRows; ++i)
{
int id = Convert.ToInt32(dgv1.SelectedRows[i].Cells[0].Value);
var emp = empSalDB.Employees.Single(e => e.EmployeeId == id);
if (emp != null)
{
empSalDB.Employees.Remove(emp);
empSalDB.SaveChanges();
}
}
}
}
private void DelSal()
{
if (abort)
return;
else
{
int selectedRows = dgv1.Rows.GetRowCount(DataGridViewElementStates.Selected);
for (int i = 0; i < selectedRows; ++i)
{
int id = Convert.ToInt32(dgv1.SelectedRows[i].Cells[0].Value);
var sal = empSalDB.Salaries.Single(s => s.SalaryId == id);
if (sal != null)
{
empSalDB.Salaries.Remove(sal);
empSalDB.SaveChanges();
}
}
}
}
데이터베이스에'CascadeDelete'가 설정되어 있습니까? – Default
이들 엔티티에 대한 전체 정의가 있습니까? 이 문제의 원인은 관계와 탐색 속성에 있다고 생각합니다. 엔티티 프레임 워크는 기본적으로이 두 가지 방법을 사용하기 때문에 한쪽에서 삭제하면 다른 쪽에서 계단식 삭제가 발생합니다. –