使用Linq查询删除多行时出错

时间:2016-02-18 09:14:52

标签: entity-framework linq asp.net-mvc-4

这就是我想要删除linq mvc 4中的多行。

int perm_id = (from c in db.tm_perm_level where c.perm_levelname == perm_name select c.perm_id).FirstOrDefault();
tblpermission objperm=(from c in db.tblpermission.Where (c.perm_id==perm_id) select c);

db.tblpermission.Remove(objperm);
int rowiseffected = db.SaveChanges();

我收到错误的地方附近。这是表格中的数据

id  s.id   perm_id  read  write
3   1        1      True    True
4   2        1      True    True
23  1        2      True    False
24  1        2      True    False

这是我试过的linq代码

var objperm = (from c in db.ts_perm_levelmapping where (c.perm_id == perm_id) select c);
            foreach(var item in objperm)
            {
                db.ts_perm_levelmapping.Remove(item);
                int rowiseffected = db.SaveChanges();

            }

1 个答案:

答案 0 :(得分:0)

我认为这是拼写错误。你正在使用两种类型的linq语法..  使用这个

  var objperm=(from c in db.tblpermission where (c.perm_id==perm_id) select c);

或使用此

  var objperm=db.tblpermission.Where(d=>d.perm_id==perm_id);

如果您使用 EntityFramework 6

,则删除可以使用RemoveRange的所有对象
   db.tblpermission.RemoveRange(objperm);

如果没有,则可以使用迭代

喜欢

   foreach(var a in objperm)  
   {
    db.tblpermission.Remove(a);
   }

或其他选项为EntityFramework.Extended