Страницы

Поиск по вопросам

четверг, 6 июня 2019 г.

Как удалить записи из таблицы одной командой?

Не получается удалить записи в таблице! Нужно удалить все комментарии у которых item_id=6. Этих комментарий штук 8. Пробую удалить таким образом: IQueryable query = (from del in db.Comments where del.item_id == 6 select del); db.DeleteObject(query);//ругается тут Но пишет что: Не удалось удалить объект, поскольку он не найден в ObjectStateManager. однако, если я хочу удалить один комментарий, т.е. так: Comment cquery = (from del in db.Comments where del.id == 4 select del).First(); то получается. Как мне правильно написать, чтобы не применять foreach и подобные вещи, а удалить сразу все комментарии, одним sql запросом (или командой, как правильнее сказать)?


Ответ

var query = from com in db.Comments where com.item_id == 6 select com;
foreach (Comment comment in query) { // тут будет 1 запрос на выборку из бд db.Comments.Remove(comment); }
db.SaveChanges(); // тут будет delete [dbo].[Comments] where ([Id] = 6) То есть удаление всех комментариев с item_id=6 произойдет с помощью одного SQL запроса

Комментариев нет:

Отправить комментарий