SQL Serverでは、テーブルの親行を削除するときにカスケードで削除を使用できることを知っていますが、SQL Serverでカスケードで削除するよりも、アプリケーション(リポジトリ)でこのロジックを実装する方がよい場合があります。
だから私は2つの質問があります。まず、SQL Serverの削除カスケードで使用しない場合、EntityFrameworkでこの状況を解決する方法。
- ユーザーAは、親レジスタとその子をコンテキストに追加します
- ユーザーBは、親レジスタに新しい子を追加します。したがって、ユーザーAにはこの子がコンテキストに含まれていません
- ユーザーAは、自分のコンテキストにロードされている親とすべての子を削除します。これらの子には、ユーザーBによって追加された新しい子は含まれません。
実際には、問題はありません。ユーザーAが親を削除しようとすると、参照整合性の例外が発生し、すべての子をロードして再試行する必要があります。
これはSQLServerにとって余分な作業です。これは、ユーザーAにすべてのレジスタを再度送信する必要があるためです。
SQL Serverのカスケードで削除を使用する場合、この問題は存在しないため、適切なオプションだと思います。
したがって、私の2番目の質問は、SQL Server(または他のデータベース)の削除カスケードで使用するのは良い考えですか、それともビジネスロジック(リポジトリ)でこのケースを実装する方が良いですか?
ありがとう。