ホームページ > バックエンド開発 > C++ > Entity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装する方法

Entity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装する方法

Barbara Streisand
リリース: 2025-01-11 14:06:43
オリジナル
632 人が閲覧しました

How to Implement Cascading Deletes for One-to-Zero-or-One Relationships in Entity Framework Code First?

Entity Framework コードファースト: 1 対 0 または 1 の関係でのカスケード削除の実装

Entity Framework Code First アプリケーションでデータの整合性を維持するには、特に 1 対 0 または 1 の関係を扱う場合、カスケード削除動作について慎重に検討する必要があることがよくあります。 デフォルトでは、親エンティティを削除すると、関連付けられた子エンティティがそのまま残り、外部キー制約に違反する可能性があります。

Fluent API はソリューションを提供します。 User エンティティとオプションの UserDetail エンティティがあり、主キーと外部キーを介してリンクされているとします。 カスケード削除を実装するには、OnModelCreating:DbContext

メソッドを変更します。
<code class="language-csharp">protected override void OnModelCreating(DbModelBuilder modelBuilder)
{   
    modelBuilder.Entity<User>()
        .HasOptional(a => a.UserDetail)
        .WithOptionalDependent()
        .WillCascadeOnDelete(true);
}</code>
ログイン後にコピー

この構成では、HasOptionalWithOptionalDependent、および WillCascadeOnDelete(true) を使用して関係を定義します。 WithOptionalDependent() は、UserDetail がオプションで User に依存することを確立し、WillCascadeOnDelete(true) は、User レコードを削除すると、関連付けられた UserDetail レコードも削除されることを保証します。

この設定では、

クラスなどを通じて User エンティティを削除すると、対応する UserRepository エントリが自動的に削除され、孤立したレコードが防止され、データベースの一貫性が維持されます。 カスケード削除は、意図しないデータ損失を避けるために、アプリケーションのビジネス ロジックに沿った場合にのみ慎重に実装する必要があることに注意してください。UserDetail

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート