私は、序数の列を持つテーブルに一意のインデックスを持つテーブルを持っています。したがって、たとえば、テーブルには、次の列があります:DbContext SaveChangesステートメントの実行順序
TABLEID、ID1、ID2、序
を一意のインデックスは、列ID1、ID2渡っ序です。
私が問題になっているのは、データベースからレコードを削除するときに、それらが再度シーケンシャルになるように序列を並べ替えることです。私の削除機能は、次のようになります。
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
問題は、私がContext.SaveChanges(呼び出すときということです)、彼らが渡されたとは異なる順序で文を実行するようだと、それが一意のインデックスを破ります。たとえば、次の処理が行われます。
- は序
- がレコードに
代わりの削除は、resequence:
- を
これはEFの正しい動作ですか?それが実行されている場合、この動作をオーバーライドして実行の順序を強制する方法がありますか?
私はこれを適切に説明していない場合は、コマンドの
返信いただきありがとうございます。私は以前これをデータベースで実装しています。コードは恐ろしいもので、苦痛だったのですが、これは管理セクションからしかアクセスできず、わずかな量が変更されます。序数が再順序付けされる主な理由は、管理ユーザーがいくつかのテーブルで順序を設定し、ギャップを見つけたときに困惑したり混乱してしまうことです。EFがあなたが提供する順序で実行されないバマーのビット。 – didiHamman