在EF Core中,.WillCascadeOnDelete(false)的等效语句是什么?

15

在 EF Core 中,相当于 .WillCascadeOnDelete(false) 的是什么?

modelBuilder.Entity<ProductTransactionHistoryClassImport>()
                .HasMany(e => e.ProductTransactionHistoryClassDetailImports)
                .WithOne(e => e.ProductTransactionHistoryClassImport)
                .WillCascadeOnDelete(false);
2个回答

30

详细信息请点击此处

OnDelete方法接受一个DeleteBehavior枚举作为参数:

Cascade - 子项应该被删除

Restrict - 子项不受影响

SetNull - 依赖行中的外键值应更新为NULL

modelBuilder.Entity<ProductTransactionHistoryClassImport>()
            .HasMany(e => e.ProductTransactionHistoryClassDetailImports)
            .WithOne(e => e.ProductTransactionHistoryClassImport)
            .OnDelete(DeleteBehavior.SetNull);

1
从DeleteBehavior.ClientNoAction的描述中可以看出,使用这个值是不寻常的。考虑使用Microsoft.EntityFrameworkCore.DeleteBehavior.ClientSetNull来代替,以匹配禁用级联删除的EF6行为。 - Shashank Shekhar

1

代码位于 DbContext 类中的 OnModelCreating 方法(ModelBuilder modelBuilder)内部,可以按以下方式使用:

.OnDelete(DeleteBehavior.Cascade);

或者

.OnDelete(DeleteBehavior.Restrict);

或者

.OnDelete(DeleteBehavior.NoAction)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接