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>
この構成では、HasOptional
、WithOptionalDependent
、および WillCascadeOnDelete(true)
を使用して関係を定義します。 WithOptionalDependent()
は、UserDetail
がオプションで User
に依存することを確立し、WillCascadeOnDelete(true)
は、User
レコードを削除すると、関連付けられた UserDetail
レコードも削除されることを保証します。
クラスなどを通じて User
エンティティを削除すると、対応する UserRepository
エントリが自動的に削除され、孤立したレコードが防止され、データベースの一貫性が維持されます。 カスケード削除は、意図しないデータ損失を避けるために、アプリケーションのビジネス ロジックに沿った場合にのみ慎重に実装する必要があることに注意してください。UserDetail
以上がEntity Framework Code First で 1 対 0 または 1 の関係のカスケード削除を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。