1

I created a MVC application using entity framework 5. I need to delete data from table using query. I have done one record delete, But now i have requiment to delete multiple records at a time.

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

Now i need to delete where cityid = 1

Code which i have tried:

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();

But its giving error.

I have searched and found a RemoveRange method to delete multiple records. But RemoveRange is not availabel in my project.

Raghubar
  • 2,768
  • 1
  • 21
  • 31

3 Answers3

1

For EF5 you need to install EF extended library: EntityFramework.Extended after sucessfully installation try this below code.

var query = from c in db.USERs
                where c.cityId  == 1            
                select c;
query.Delete();
Jaimin Soni
  • 1,061
  • 1
  • 13
  • 29
0

Try this:

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

With EF6 it's easier:

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

Let me know if this helps,

Alberto

Alberto
  • 1,853
  • 1
  • 18
  • 22
-1

This would help to remove from the DB using Entity Framework:

Code: db.USERs.RemoveRange(db.USERs.Where(w => w.cityId == 1));

Jaimin Soni
  • 1,061
  • 1
  • 13
  • 29
Venki
  • 2,129
  • 6
  • 32
  • 54