LINQ Join 从多个表中删除内容

LINQ Join to delete contents from multiple tables

我有一个关于 LINQ 删除的问题。我在数据库中有 2 个 table 并且它们已连接。

第一个 Table: empid, empname, salary, dname

第二个 Table:dIddname

我想从第一个 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