Como faço para excluir uma ou mais linhas de minha mesa usando Linq to Entities * sem * recuperar as linhas em primeiro lugar?

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

  •  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?

Foi útil?

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();

Veja ponta completo para detalhes e complicações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top