Удалите большой список элементов с помощью Entity Framework

Я хочу удалить большой список элементов с помощью EF, поэтому я попытался удалить их один за другим, но это занимает много времени.

И я попытался использовать .RemoveAll() с моим списком, но он не обновляет базу данных [только удалять из загруженного объекта]

Поэтому я использую SqlCommand для их удаления из базы данных, и я использую .RemoveAll() чтобы исключить исключение EF unexpected number of rows update (0).

Код:

dbContext.Database.ExecuteSqlCommand("DELETE FROM xxx WHERE xxx");
loadedEntity.subItems.ToList().RemoveAll(r => true);
dbContext.SaveChanges();

Мой вопрос: есть ли лучший способ сделать это?

2 ответа

попробуй это

var all = dbContext.XXX.Where(x => x.xxx == "xxx");
dbContext.XXX.RemoveRange(all);
dbContext.SaveChanges();


Посмотрите на пакетные расширения. (один или два)

Удаление будет таким же простым, как dbContext.XXX.Delete(x => x.xxx == "xxx").

licensed under cc by-sa 3.0 with attribution.