Ho una tabella che ha un indice univoco su una tabella con una colonna Ordinale. Così, ad esempio, la tabella avrà le seguenti colonne:DbContext SaveChanges Ordine di esecuzione Esecuzione
TableID, ID1, ID2, ordinale
L'indice univoco è attraverso le colonne ID1, ID2, ordinali.
Il problema che ho è che quando si elimina un record dal database, quindi rianquisto gli ordinali in modo che siano di nuovo sequenziali. La mia funzione di eliminazione sarà simile a questa:
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
Il problema è che quando chiamo Context.SaveChanges() si rompe l'indice univoco come sembra l'esecuzione delle istruzioni in un ordine diverso da quello che sono state approvate. Ad esempio si verifica quanto segue:
- resequence ordinali
- eliminare il record
Anziché:
- Eliminare il record
- resequence ordinali
È questo il comportamento corretto di EF? E se lo è, c'è un modo per sovrascrivere questo comportamento per forzare l'ordine di esecuzione?
Se non mi sono spiegato correttamente questo, per favore fatemelo sapere ...
Ciao, grazie per la risposta! L'ho implementato in precedenza con un database e come hai detto puzza. Il codice è orribile ed è stato un problema, in più questo sarà accessibile solo da una sezione di amministrazione e cambierà piccole quantità. Il motivo principale per cui gli ordinali vengono risequenziati è che gli utenti di amministrazione possono impostare l'ordine su più tabelle e diventare pignoli o confusi quando vedono delle lacune ... Un po 'di bummer che EF non esegue nell'ordine che tu fornisci. – didiHamman