Страницы

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

четверг, 19 марта 2020 г.

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

#aspnet #entity_framework #aspnet_mvc #sql


Не получается удалить записи в таблице! Нужно удалить все комментарии у которых 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 запросом (или командой, как правильнее сказать)?    


Ответы

Ответ 1



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 запроса

Ответ 2



А зачем foreach ? Можно же сделать так: context.YourTable.RemoveRange(context.YourTable); context.SaveChanges();

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

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