Mam tabelę, która ma unikalny indeks na tabeli z kolumną porządkową. Tak na przykład tabela będzie posiadać następujące kolumny:DbContext SaveChanges Zamówienie instrukcji wykonania
tableid, ID1, ID2, porządkowej
Unikalny indeks jest po drugiej kolumny ID1, ID2, porządkowej.
Problem polega na tym, że usuwając rekord z bazy danych, następnie odejmuję sekwencje porządkowe, aby były ponownie sekwencyjne. Moja funkcja kasowania będzie wyglądać następująco:
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
Problem jest, że gdy zgłoszę Context.SaveChanges() przerywa unikatowy indeks, jak się wydaje na wykonanie sprawozdania w innej kolejności niż zostały one przekazywane. Na przykład dodaje się dzieje:
- Resequence liczb porządkowych
- usunąć rekord
zamiast:
- Usuń rekord
- Resequence liczb porządkowych
Czy to jest prawidłowe zachowanie EF? A jeśli tak, to czy istnieje sposób na nadpisanie tego zachowania, aby wymusić kolejność egzekucji?
Gdybym nie wyjaśniłem tego prawidłowo, proszę dać mi znać ...
Cześć dzięki za odpowiedź! Zaimplementowałem to wcześniej z bazą danych i jak już powiedziałeś, śmierdzi. Kod jest okropny i był uciążliwy, a to będzie dostępne tylko z sekcji administratora i zmieni niewielkie kwoty. Głównym powodem resekwencji porządkowych jest to, że administratorzy mogą ustawić kolejność na kilku stołach i stają się wybredni lub zagubieni, gdy zobaczą luki ... Trochę pomyłki, że EF nie wykonuje się w kolejności, którą podajesz. – didiHamman