【问题标题】:Deleting multiple records at a time entities framework 5一次删除多个记录实体框架 5
【发布时间】:2015-05-25 08:34:50
【问题描述】:

我使用实体框架 5 创建了一个 MVC 应用程序。我需要使用查询从表中删除数据。我已经删除了一条记录,但是现在我需要一次删除多条记录。

My Table USER:
Id      Name     cityId
1       Rajesh      1
2       Rahul       1
3       Sulagna     1
4       Rajoshri    2
5       Deb         2

现在我需要删除 where cityid = 1

我尝试过的代码:

List<USER> listUser = new List<USER>();
listUser = db.USERs.Where(w => w.cityId == 1).ToList();
db.Entry(listUser).State = System.Data.EntityState.Deleted;
db.SaveChanges();

但它给出的错误。

我搜索并找到了删除多条记录的 RemoveRange 方法。但 RemoveRange 在我的项目中不可用。

【问题讨论】:

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


【解决方案1】:

对于 EF5,您需要安装 EF 扩展库:EntityFramework.Extended 安装成功后试试下面的代码。

var query = from c in db.USERs
                where c.cityId  == 1            
                select c;
query.Delete();

【讨论】:

    【解决方案2】:

    试试这个:

    foreach (var user in db.USERs.Where(u => u.cityId == 1).ToList()) { 
        db.USERs.Remove(user):
    }
    db.SaveChanges();
    

    使用 EF6 更容易:

    db.USERs.RemoveRange(db.USERs.Where(u => u.cityId == 1));
    db.SaveChanges();
    

    如果这有帮助,请告诉我,

    阿尔伯托

    【讨论】:

    • 您是否插入了所需的 NS?使用 System.Data;使用 System.Data.Entity;
    • 我已经添加了它仍然不可用。你在实体框架 5 中试过这个吗?
    • 对不起,我错过了那部分... RemoveRange 在 EF6 中可用!好的:更新答案!
    【解决方案3】:

    这将有助于使用Entity Framework从数据库中remove

    代码: db.USERs.RemoveRange(db.USERs.Where(w =&gt; w.cityId == 1));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多