Unique インデックスを持つ多対多テーブルのレコードを削除しようとしています。したがって、コンポーネントがリストに追加されている場合、順序を 1 つ増やす必要があります。そうしないと、バックエンドで DB への保存が許可されません。
リスト内のこれらのコンポーネントの1つを削除すると、これらのコンポーネントの順序にギャップがないように、それよりも高い順序でコンポーネントを変更するときに問題が発生します。
シナリオ:
多対多テーブルには、一意のインデックスと componentId の一意の 5 つのコンポーネントが取り込まれます。コンポーネント entityAspect は削除済みに設定されています (保存はまだ行われていません)
3 番目のコンポーネントを削除すると、コンポーネント 4 と 5 のインデックスがそれぞれ 1 ずつ減るため、新しいインデックスは 1245 ではなく 1234 になります。 .
また、saveMap を上書きしようとしました。
protected override Dictionary<Type, List<EntityInfo>> BeforeSaveEntities(Dictionary<Type, List<EntityInfo>> saveMap)
{
saveMap[typeof(ManyToManyBdo)] = saveMap[typeof(ManyToManyBdo)].OrderBy(info => info.EntityState).ToList();
return base.BeforeSaveEntities(saveMap);
}
ただし、これはそよ風の実行方法を変更するようには見えません。