Эффективный способ удалить несколько строк с Linq to Entity? - PullRequest
10 голосов
/ 19 мая 2011

Привет, я ищу эффективный способ удалить несколько записей одновременно. Я удаляю 400 записей, и это занимает 8-15 секунд. Вот мой код

using (var entities = new Entity())
   {                               
       foreach (Item item in entities.Items.Where(x => x.id == id))
              entities.DeleteObject(item);
       entities.SaveChanges();
   }

Ответы [ 3 ]

3 голосов
/ 24 декабря 2012

Вы можете сделать это быстрее, используя EntityFramework.Extensions
1) Сначала установите EntityFramework.Extensions, используя NuGet

2) Вот код, похожий на DeleteAllOnSubmit () Linq2Sql:

using EntityFramework.Extensions;

....

using (var entities = new Entity())
{                               
    entities.Items.Delete(x => x.id == id);
    entities.SaveChanges();
}

...
1 голос
/ 19 октября 2012

В вашем цикле:

using (var entities = new Entity()) 
{                                
    foreach (Item item in entities.Items.Where(x => x.id == id)) 
           entities.DeleteObject(item); 
    entities.SaveChanges(); 
} 

Если вы переместите сущности.SaveChanges ();поэтому после цикла он будет работать значительно быстрее.

using (var entities = new Entity()) 
{                                
    foreach (Item item in entities.Items.Where(x => x.id == id)) 
          entities.DeleteObject(item); 
} 
entities.SaveChanges(); 
1 голос
/ 19 мая 2011

Извлечение Массовое удаление в LINQ to Entities или PLINQO для Entity Framework , если это удаление, которое вы можете выполнить в одном пакете, т.е.

DELETE FROM Entities WHERE [some condition]

В противном случае, возможно, проверьте, есть ли у вас индекс для столбца x, который вы используете для поиска каждой записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...