排名
6
文章
199
粉丝
4
评论
3
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

和以前的写法有点不同现在没有modelBuilder.Conventions这种用法了,单独开启级联删除的方法也和以前不太一样
以前的写法:
- protected override void OnModelCreating(DbModelBuilder modelBuilder)
- {
- //删除掉级联删除的规则
- modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
- }
以前单独的控制写法:
- protected override void OnModelCreating(DbModelBuilder modelBuilder)
- {
- //关闭级联删除
- modelBuilder.Entity<Pet>().HasRequired(a => a.userinfo).WithMany(a => a.pets).HasForeignKey(a => a.UserId).WillCascadeOnDelete(false);
- }
以前使用的是WillCascadeOnDelete方法,而且参数只有true和false,就是是否开启级联查询
.NET CORE中EF级联删除的写法
使用的是OnDelete,而且参数是枚举不止,ture和false
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- modelBuilder.Entity<Student>().Property(p => p.RowVersion).IsConcurrencyToken();
- modelBuilder.Entity<UserParent>().HasMany(a => a.Students).WithOne(a => a.UserParent).HasForeignKey(a => a.MyUserParentId).OnDelete(DeleteBehavior.NoAction);
- }
DeleteBehavior.NoAction:就是不开启级联删除,会出发外键约束。
DeleteBehavior.Cascade:就是开启级联删除,是默认值
其他还有:DeleteBehavior.SetNull,DeleteBehavior.ClientSetNull,Restrict等
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价