Como faço para excluir uma ou mais linhas de minha mesa usando Linq to Entities * sem * recuperar as linhas em primeiro lugar?
-
05-07-2019 - |
Pergunta
Eu compreendo que eu pode mapear um procedimento armazenado de exclusão para o método delete para um tipo particular.
No entanto, isso requer passar em um objeto recuperado para o método DeleteObject
do meu contexto.
Esta é ruim o suficiente, mas o que se eu quiser excluir linhas 2000? Posso fazer isso com o LINQ to Entities sem antes recuperar as linhas 2000 a partir do banco de dados e passando por um DeleteObject
chamando loop?
Se tal funcionalidade não existe em Linq to Entities, e você sabe que este seja o caso, então por favor, é só dizer e eu vou investigar outras opções!
Se ela não existe diretamente, eu poderia alcançar é canalizando um Proc através de Linq to Entities?
Solução
Sim, você pode fazer isso. De esta dica :
// 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();