LINQ Join 从多个表中删除内容
LINQ Join to delete contents from multiple tables
我有一个关于 LINQ 删除的问题。我在数据库中有 2 个 table 并且它们已连接。
第一个 Table: empid
, empname
, salary
, dname
第二个 Table:dId
、dname
我想从第一个 table 中删除一个员工,并从子 table 中删除所有引用。我为此编写了以下代码,tables 在查询执行后保持相同状态。如何使用 LINQ 删除它?请解释需要进行哪些更改才能获得正确的解决方案。
public string DeleteData(int id)
{
try
{
var emplist = new List<ViewDetails>();
// tble_dept dept = new tble_dept();
//tble_Emp emp = new tble_Emp();
OperationDataDataContext dc = new OperationDataDataContext();
var employess = from emps in dc.tble_Emps
join depts in dc.tble_depts
on emps.deptid equals depts.id
select new ViewDetails
{
empid = emps.EmpId,
empname = emps.EmpName,
salary = emps.EmpSalary,
dname = depts.Dname,
};
var company = employess.FirstOrDefault(c => c.empid == id);
emplist = employess.ToList();
if (company == null)
return "Company cannot be found";
emplist.Remove(company);
dc.SubmitChanges();
return "ok";
}
catch (Exception ex)
{
return ex.Message;
}
}
你应该使用DeleteAllOnSubmit
var company = employess.FirstOrDefault(c => c.empid == id);
if (company == null)
return "Company cannot be found";
dc.tble_Emps.DeleteAllOnSubmit(company);
dc.SubmitChanges();
return "ok";
public string DeleteData(int id)
{
try
{
var emplist = new List<ViewDetails>();
// tble_dept dept = new tble_dept();
//tble_Emp emp = new tble_Emp();
OperationDataDataContext dc = new OperationDataDataContext();
int q = Convert.ToInt32(id);
var employess = from emps in dc.tble_Emps
join depts in dc.tble_depts
on emps.deptid equals depts.id
where q == emps.EmpId
select emps;
// if (company == null)
// return "Company cannot be found";
dc.tble_Emps.DeleteAllOnSubmit(employess);
dc.SubmitChanges();
return "ok";
}
catch (Exception ex)
{
return ex.Message;
}
}
删除时级联 功能在 EntityFramework 中。如果父 table 与子 table 具有一对多关系。当删除父 table 行时,子行将被删除或外键列设置为空。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasOptional<Standard>(s => s.Standard)
.WithMany()
.WillCascadeOnDelete(false);
}
有关删除级联的更多详细信息,请参阅此 link:http://www.entityframeworktutorial.net/code-first/cascade-delete-in-code-first.aspx
我有一个关于 LINQ 删除的问题。我在数据库中有 2 个 table 并且它们已连接。
第一个 Table: empid
, empname
, salary
, dname
第二个 Table:dId
、dname
我想从第一个 table 中删除一个员工,并从子 table 中删除所有引用。我为此编写了以下代码,tables 在查询执行后保持相同状态。如何使用 LINQ 删除它?请解释需要进行哪些更改才能获得正确的解决方案。
public string DeleteData(int id)
{
try
{
var emplist = new List<ViewDetails>();
// tble_dept dept = new tble_dept();
//tble_Emp emp = new tble_Emp();
OperationDataDataContext dc = new OperationDataDataContext();
var employess = from emps in dc.tble_Emps
join depts in dc.tble_depts
on emps.deptid equals depts.id
select new ViewDetails
{
empid = emps.EmpId,
empname = emps.EmpName,
salary = emps.EmpSalary,
dname = depts.Dname,
};
var company = employess.FirstOrDefault(c => c.empid == id);
emplist = employess.ToList();
if (company == null)
return "Company cannot be found";
emplist.Remove(company);
dc.SubmitChanges();
return "ok";
}
catch (Exception ex)
{
return ex.Message;
}
}
你应该使用DeleteAllOnSubmit
var company = employess.FirstOrDefault(c => c.empid == id);
if (company == null)
return "Company cannot be found";
dc.tble_Emps.DeleteAllOnSubmit(company);
dc.SubmitChanges();
return "ok";
public string DeleteData(int id)
{
try
{
var emplist = new List<ViewDetails>();
// tble_dept dept = new tble_dept();
//tble_Emp emp = new tble_Emp();
OperationDataDataContext dc = new OperationDataDataContext();
int q = Convert.ToInt32(id);
var employess = from emps in dc.tble_Emps
join depts in dc.tble_depts
on emps.deptid equals depts.id
where q == emps.EmpId
select emps;
// if (company == null)
// return "Company cannot be found";
dc.tble_Emps.DeleteAllOnSubmit(employess);
dc.SubmitChanges();
return "ok";
}
catch (Exception ex)
{
return ex.Message;
}
}
删除时级联 功能在 EntityFramework 中。如果父 table 与子 table 具有一对多关系。当删除父 table 行时,子行将被删除或外键列设置为空。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasOptional<Standard>(s => s.Standard)
.WithMany()
.WillCascadeOnDelete(false);
}
有关删除级联的更多详细信息,请参阅此 link:http://www.entityframeworktutorial.net/code-first/cascade-delete-in-code-first.aspx