ホームページ >バックエンド開発 >C++ >Entity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装するにはどうすればよいですか?

Entity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-11 14:03:41116ブラウズ

How to Implement Cascade Delete for One-to-Zero-or-One Relationships in Entity Framework Code First?

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>

このコード スニペットは、HasOptionalWithOptionalDependent を使用して 1 対 0 または 1 の関係を確立します。 重要なのは、WillCascadeOnDelete(true) はカスケード削除を有効にすることです。 現在、「User」を削除すると、対応する「UserDetail」エントリが自動的に削除され、データの整合性が維持されます。 これにより、DeleteUserRepository メソッドが簡素化され、両方のレコードが 1 回の操作で確実に削除されます。

以上がEntity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。