排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
.net core
和以前的写法有点不同现在没有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等
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739
评价