Parece-me que tenho que recuperar um objeto antes de excluí-lo com a estrutura de entidade como abaixo
var customer = context.Customers.First(c => c.Id == 1);
context.DeleteObject(customer);
context.Savechanges();
Portanto, preciso acessar o banco de dados duas vezes. Existe uma maneira mais fácil?
entity-framework
entity
Jeff
fonte
fonte
Respostas:
No Entity Framework 6, a ação de exclusão é
Remove
. Aqui está um exemplofonte
Attach
? Por que não apenasRemove
eSaveChanges
?O mesmo que @Nix, com uma pequena alteração para ser fortemente tipado:
Se você não quiser consultá-lo, basta criar uma entidade e excluí-la.
fonte
Pergunta semelhante aqui .
Com o Entity Framework, existe o EntityFramework-Plus (biblioteca de extensões).
Disponível no NuGet. Então você pode escrever algo como:
Também é útil para exclusões em massa.
fonte
Se você não quiser consultá-lo, basta criar uma entidade e excluí-la.
fonte
Estou usando o seguinte código em um dos meus projetos:
Dessa forma, ele consultará o banco de dados duas vezes apenas se ocorrer uma exceção ao tentar remover o item com o ID especificado. Então, se o item não for encontrado, ele retornará uma mensagem significativa; caso contrário, ele apenas devolve a exceção (você pode lidar com isso de uma maneira mais adequada ao seu caso usando diferentes blocos catch para diferentes tipos de exceção, adicionar mais verificações personalizadas usando blocos if etc.).
[Estou usando este código em um projeto MVC .Net Core / .Net Core com Entity Framework Core.]
fonte
A consulta SQL bruta é a maneira mais rápida, suponho
fonte
A resposta de dwkd funcionou principalmente para mim no núcleo do Entity Framework, exceto quando vi esta exceção:
Para evitar a exceção, atualizei o código:
fonte
Uma versão menor (quando comparada às anteriores):
fonte
Na verdade, essa resposta foi tirada do curso de Scott Allen intitulado ASP.NET MVC 5 Fundamentals. Achei melhor compartilhar porque acho um pouco mais simples e intuitivo do que qualquer uma das respostas aqui. Observe também que, de acordo com Scott Allen e outros treinamentos que fiz, o método find é uma maneira otimizada de recuperar um recurso do banco de dados que pode usar o cache se já tiver sido recuperado. Neste código, coleção se refere a um DBSet de objetos. O objeto pode ser qualquer tipo de objeto genérico.
fonte