Tengo una tabla que tiene un índice único en una tabla con una columna ordinal. Así, por ejemplo, la tabla tendrá las siguientes columnas:DbContext SaveChanges Order of Statement Execution
IDtabla, ID1, ID2, ordinal
El índice único es a través de las columnas ID1, ID2, ordinales.
El problema que tengo es que cuando elimino un registro de la base de datos, vuelvo a secuenciar los ordinales para que vuelvan a ser secuenciales. Mi función de borrado se verá así:
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
La cuestión es que cuando llamo Context.SaveChanges() se rompe el índice único como parece a ejecutar las sentencias en un orden diferente al que se aprobaron. Por ejemplo ocurre lo siguiente:
- secuenciar los ordinales
- Eliminar el registro
En lugar de:
- Eliminar el registro
- secuenciar los ordinales
¿Es este el comportamiento correcto de EF? Y si lo es, ¿hay alguna manera de anular este comportamiento para forzar el orden de ejecución?
Si no he explicado esto correctamente, por favor hágamelo saber ...
¡Hola gracias por la respuesta! Lo he implementado previamente con una base de datos y, como lo ha dicho, apesta. El código es horrible y fue un problema, además de que solo será accesible desde una sección de administración y cambiará pequeñas cantidades. La razón principal por la que los ordinales se vuelven a secuenciar es que los usuarios de la administración pueden establecer el orden en varias tablas y ser quisquillosos o confundidos cuando ven espacios ... Un poco fastidioso que EF no ejecuta en el orden que usted proporciona. – didiHamman