.net core EF DeleteBehavior

ef 级联删除 

DeleteBehavior

ascade 2

依赖实体也会被删除。 此级联行为仅适用于由上下文跟踪的实体。 应在数据库中设置相应的级联行为,以确保上下文未跟踪的数据应用了相同的操作。 如果使用 EF 创建数据库,则会为你设置此级联行为。

Restrict 0

删除操作不应用于依赖实体。 依赖实体保持不变。

SetNull 1

依赖实体中的外键属性设置为 null。 此级联行为仅适用于由上下文跟踪的实体。 应在数据库中设置相应的级联行为,以确保上下文未跟踪的数据应用了相同的操作。 如果使用 EF 创建数据库,则会为你设置此级联行为。

参考 

DeleteBehavior 枚举 (Microsoft.EntityFrameworkCore.Metadata) | Microsoft Learn

 

 public class PostMapper : IEntityTypeConfiguration<Post>
 {
     public void Configure(EntityTypeBuilder<Post> builder)
     {
         // Blog与Post之间为 1 - 多关联关系
         builder.HasOne(p => p.Blog)
             .WithMany(b => b.Posts)
             .HasForeignKey(p => p.BId)
             .IsRequired()
             .OnDelete(DeleteBehavior.Cascade);

         builder.ToTable("Post");
         //设置属性Title最大长度70,列名在数据库显示为BlogTitle

         builder.Property(a => a.Title).HasMaxLength(50).HasColumnName("Title");
         //设置属性PostId,列名在数据库显示为Id

         builder.Property(t => t.PostId).HasColumnName("Id");
     }
 }

  

posted on 2024-04-01 16:38  是水饺不是水饺  阅读(2)  评论(0编辑  收藏  举报

导航