データベースにLogsテーブルがあり、ユーザーアクションのレコードを保存しています。ユーザーIDの列があります。これは、ログが追加されたときにユーザーIDが存在することを確認するためにユーザーテーブルに外部キーが設定されています。ただし、ユーザーを削除しようとすると、ユーザーテーブルに存在しなくなったユーザーIDがログテーブルに残るため、制約が失敗します。ログから問題のある行を削除することはできません。これは、永続的なレコードを保持することが重要であるため(基本的に、誰が何を破ったかを特定できるようにするため)、そのユーザーによるすべてのアクションを削除すると、目的が失われます。
新しいログを挿入するときに(その時点でユーザーが存在することを確認するために)制約をチェックするようにする簡単な方法はありますが、ユーザーを削除するときはチェックしませんか?LINQを介してDBにアクセスしているため、クエリはSQLではなくC#で行われるため、それを必要とするものはすべて削除されますが、MS SQL Server Management Studioを介してデータベースにアクセスできるため、好きなことを実行できます。 。
少し明確にするために編集:誰が行動を起こしたのかを知ることの価値は、説明責任だけではありません。これは、問題がユーザー固有、組織固有、またはシステム全体のいずれであるかを判断するのに役立ちます。これにより、考えられる原因のリストを大幅に絞り込むことができます。ユーザーが削除された後も、アクションを保持する価値があります。たとえば、あるユーザーが特定の組み合わせを実行することによって発生した問題を追跡する場合など、さまざまな理由で、そのユーザーがどのアクションを実行したかを知ることは有用です。 。別々に問題がないが、一方が他方の直後に続くとエラーを引き起こす2つのアクション)。