Tengo una tabla de SQL Server en Entity Framework employ
con una sola columna de clave llamada ID
.
¿Cómo elimino un solo registro de la tabla con Entity Framework?
c#
sql-server
entity-framework
usuario2497476
fuente
fuente
Respuestas:
No es necesario consultar primero el objeto, puede adjuntarlo al contexto por su id. Me gusta esto:
Alternativamente, puede establecer el estado de la entrada adjunta en eliminado:
fuente
ctx.Entry(employer).State = EntityState.Deleted
Puede usar
SingleOrDefault
para obtener un solo objeto que coincida con sus criterios, y luego pasarlo alRemove
método de su tabla EF.fuente
fuente
FirstOrDefault
es peligroso. O sabe que solo hay uno (así que useSingleOrDefault
), o hay más de uno, y debe hacerse en un bucle.fuente
First
es peligroso. O sabe que solo hay uno (así que useSingle
), o hay más de uno, y debe hacerse en un bucle.Estoy usando el marco de la entidad con LINQ. El siguiente código fue útil para mí;
1- Para registros múltiples
2- Para registro único
fuente
SingleOrDefault
lugar deFirstOrDefault
?Approuch más genérico
fuente
Con Entity Framework 6, puede usar
Remove
. También es una buena tácticausing
para asegurarse de que su conexión esté cerrada.fuente
Solo quería contribuir con los tres métodos con los que he rebotado.
Método 1:
Método 2:
Una de las razones por las que prefiero seguir con el Método 2 es porque en el caso de configurar EF o EFCore
QueryTrackingBehavior.NoTracking
, es más seguro hacerlo.Luego está el Método 3:
Esto utiliza un enfoque de eliminación suave al establecer la
DeletedOn
propiedad del registro y aún así poder mantener el registro para uso futuro, sea lo que sea. Básicamente, ponerlo en la Papelera de reciclaje .Además, con respecto al Método 3 , en lugar de configurar todo el registro para que se modifique:
También simplemente establecería solo la columna
DeletedOn
como modificada:fuente
¿Qué opinas de esto, simple o no? También puedes probar esto:
fuente
Para DAO genérico, mi trabajo finalmente es esto:
fuente
Usar EntityFramework.Plus podría ser una opción:
Más ejemplos están disponibles aquí
fuente
puedes hacerlo simplemente así
modelo
vista desde la cual lo llamarás
Espero que esto sea fácil de entender
fuente
Puede hacer algo como esto en su evento click o celldoubleclick de su cuadrícula (si utilizó uno)
Luego haga algo como esto en su botón Eliminar:
Alternativamente, puede usar una consulta LINQ en lugar de usar la consulta LINQ To Entities:
mploy.Id se utiliza como parámetro de filtrado que ya pasó del evento CellDoubleClick de su DataGridView.
fuente
Aquí hay una manera segura:
Aquí puede agrupar todos los cambios que desee, para que pueda hacer una serie de borrados antes de SaveChanges y Commit, para que se apliquen solo si todos son exitosos.
fuente
La mejor manera es verificar y luego eliminar
fuente