Как мне удалить одну или несколько строк из моей таблицы, используя Linq to Entities * без * предварительного извлечения строк?

StackOverflow https://stackoverflow.com/questions/1601350

  •  05-07-2019
  •  | 
  •  

Вопрос

Я понимаю, что могу сопоставить хранимую процедуру удаления с методом удаления для определенного типа.

Однако для этого необходимо передать извлеченный объект в метод DeleteObject моего контекста.

Это достаточно плохо, но что, если я хочу удалить 2000 строк? Могу ли я сделать это с помощью Linq to Entities без предварительного извлечения этих 2000 строк из базы данных и прохождения цикла, вызывающего DeleteObject ?

Если такой функции не существует в Linq to Entities, и вы знаете, что это так, то просто скажите об этом, и я рассмотрю другие варианты!

Если он не существует напрямую, могу ли я добиться этого, передав по трубопроводу сохраненный процесс через Linq в сущности?

Это было полезно?

Решение

Да, вы можете сделать это. От этот совет :

// Create an entity to represent the Entity you wish to delete
// Notice you don't need to know all the properties, in this
// case just the ID will do.
Category stub = new Category { ID = 4 };
// Now attach the category stub object to the "Categories" set.
// This puts the Entity into the context in the unchanged state,
// This is same state it would have had if you made the query
ctx.AttachTo("Categories", stub);
// Do the delete the category
ctx.DeleteObject(stub);
// Apply the delete to the database
ctx.SaveChanges();

См. полный совет для деталей и осложнений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top