Eu tenho uma tabela do SQL Server no Entity Framework denominada employ
com uma coluna de chave única denominada ID
.
Como excluo um único registro da tabela usando o Entity Framework?
c#
sql-server
entity-framework
user2497476
fonte
fonte
Respostas:
Não é necessário consultar o objeto primeiro, você pode anexá-lo ao contexto por seu ID. Como isso:
Como alternativa, você pode definir o estado da entrada anexada como excluído:
fonte
ctx.Entry(employer).State = EntityState.Deleted
Você pode usar
SingleOrDefault
para obter um único objeto que corresponda aos seus critérios e depois passar para oRemove
método da sua tabela EF.fonte
fonte
FirstOrDefault
é perigoso. Ou você sabe que há apenas um (use-oSingleOrDefault
) ou há mais de um, e isso deve ser feito em um loop.fonte
First
é perigoso. Ou você sabe que há apenas um (use-oSingle
) ou há mais de um, e isso deve ser feito em um loop.Estou usando a estrutura da entidade com o LINQ. O código a seguir foi útil para mim;
1- Para vários registros
2- Para registro único
fonte
SingleOrDefault
vez deFirstOrDefault
?Aprovação mais genérica
fonte
Com o Entity Framework 6, você pode usar
Remove
. Também é uma boa tática a ser usadausing
para ter certeza de que sua conexão está fechada.fonte
Só queria contribuir com os três métodos com os quais eu andei.
Método 1:
Método 2:
Uma das razões pelas quais eu prefiro seguir o método 2 é porque, no caso de definir EF ou EFCore
QueryTrackingBehavior.NoTracking
, é mais seguro fazer isso.Depois, há o método 3:
Isso utiliza uma abordagem de exclusão suave, definindo a
DeletedOn
propriedade do registro e ainda sendo capaz de manter o registro para uso futuro, qualquer que seja. Basicamente, colocá-lo na Lixeira .Além disso, em relação ao método 3 , em vez de definir o registro inteiro para ser modificado:
Você também definiria apenas a coluna
DeletedOn
como modificada:fonte
O que você acha disso, simples ou não, você também pode tentar o seguinte:
fonte
Para o DAO genérico, meu trabalho finalmente é o seguinte:
fonte
Usar EntityFramework.Plus pode ser uma opção:
Mais exemplos estão disponíveis aqui
fonte
você pode fazer isso simplesmente assim
modelo
vista a partir do qual você vai chamá-lo
Espero que seja fácil para você entender
fonte
Você pode fazer algo assim no seu evento de clique ou clique de célula da sua grade (se você usou um)
Em seguida, faça algo assim no seu botão Excluir:
Como alternativa, você pode usar uma consulta LINQ em vez de usar a consulta LINQ To Entities:
Employ.Id é usado como parâmetro de filtragem que já foi passado do CellDoubleClick Event do seu DataGridView.
fonte
Aqui está uma maneira segura:
Aqui você pode acumular todas as alterações que desejar, para fazer uma série de exclusão antes de SaveChanges e Commit, para que elas sejam aplicadas apenas se tiverem êxito.
fonte
A melhor maneira é verificar e excluir
fonte