Как УДАЛИТЬ несколько элементов из базы данных с Code-First EF 4.1 - PullRequest
2 голосов
/ 12 августа 2011

Мы используем код EF 4 с DbContext и DbSet <> и POCO с DataAnnotations. Я новичок в этом и не могу найти ответ на свой вопрос:

Как я могу удалить несколько элементов из БД напрямую, не выбирая сначала элементы с помощью LINQ, а затем выполняя цикл и вызывая Remove(item) на каждой итерации? Это кажется мне глупым.

Все ссылки, относящиеся к этому, относятся к функции, которая, кажется, не существует, например, DeleteOnSubmit(item), которой нет в моем DbContext. Кроме того, он удаляет только один элемент.

Есть ли лучший способ?

Ответы [ 2 ]

4 голосов
/ 12 августа 2011

DeleteOnSubmit - это функция из DataContext class = Linq-to-SQL

Вам не нужно загружать элемент перед его удалением.Достаточно, если вы знаете его ключ.Примерно так должно работать:

var item = new Item { Id = someId };
context.Items.Attach(item);
context.Items.Remove(item);
context.SaveChanges();

или

var item = new Item { Id = someId };
context.Items.Attach(item);
context.Entry(item).State = EntityState.Deleted;
context.SaveChanges();

Невозможно удалить несколько элементов с помощью EF (кроме каскадного удаления) без указания каждого отдельного элемента, который нужно удалить.Если вы хотите удалить несколько элементов напрямую, вы должны использовать SQL как

context.Database.ExecuteSqlCommand("DELETE ...");
0 голосов
/ 12 августа 2011

Entity Framework не поддерживает множественное удаление одновременно, так как требуется объект в памяти. Вам нужно перебрать цикл.

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