Entity Framework Code First: 1 対 0 または 1 の関係でのカスケード削除
Entity Framework Code First では、1 対 0 または 1 の関係を管理するには、カスケード削除について慎重に検討する必要があります。 これにより、関連付けられた親エンティティが削除されたときに、依存エンティティも自動的に削除されます。
「User」と「UserDetail」のシナリオで説明してみましょう。 「User」には「UserDetail」レコードがある場合とない場合があります。 適切な構成を行わないと、「User」を削除すると、関連する「UserDetail」レコードが孤立したままになります。
解決策は、DbContext クラスの OnModelCreating
メソッド内で Fluent API を使用することです。
<code class="language-csharp">protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<User>() .HasOptional(a => a.UserDetail) .WithOptionalDependent() .WillCascadeOnDelete(true); }</code>
このコード スニペットは、HasOptional
と WithOptionalDependent
を使用して 1 対 0 または 1 の関係を確立します。 重要なのは、WillCascadeOnDelete(true)
はカスケード削除を有効にすることです。 現在、「User」を削除すると、対応する「UserDetail」エントリが自動的に削除され、データの整合性が維持されます。 これにより、Delete
の UserRepository
メソッドが簡素化され、両方のレコードが 1 回の操作で確実に削除されます。
以上がEntity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。