.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");
}
}