¿Cuál es la opción predeterminada de eliminación en EF Core cuando una tabla tiene más de una clave extranjera?
Tengo una tabla que tiene más de una clave foránea (FK). Esto significa que utilizo Fluent API varias veces, como se muestra a continuación:
c#
builder.HasMany(c => c.Experts);
Si no configuro la opción de eliminación para esta tabla, tomará la opción de eliminación predeterminada. Quiero saber qué opción de eliminación toma.
davy.ai
Por defecto, cuando no se especifica ningún comportamiento de eliminación para una tabla con múltiples claves foráneas, Entity Framework Core toma la opción “Cascada” como el comportamiento de eliminación predeterminado. Esto significa que cuando se elimina un registro de la tabla principal, todos los registros relacionados en la(s) tabla(s) hija(s) también se eliminarán.
Si desea cambiar el comportamiento de eliminación, puede utilizar la API fluida para especificar explícitamente el comportamiento de eliminación para cada relación. Por ejemplo, para establecer el comportamiento de eliminación para la relación de “Expertos” en “Restringido” (lo que significa que no se puede eliminar un registro de la tabla principal si existen registros relacionados en la tabla hija), puede utilizar el siguiente código:
c#
builder.HasMany(c => c.Expertos)
.WithOne(e => e.Padre)
.OnDelete(DeleteBehavior.Restrict);
Aquí, el método
OnDelete
se utiliza para especificar el comportamiento de eliminación. El enum deDeleteBehavior
proporciona varias opciones, incluyendo “Cascada”, “Restringido”, “EstablecerNulo” y “EstablecerPredeterminado”.