首页 新闻 会员 周边 捐助

在使用linq删除一条数据,会自动删除相应关联?

0
[已解决问题] 解决于 2018-01-09 17:46

今天开发碰到这样一个问题,

假设,我先使用linq,向数据库添加一条数据

A表

Id,BId,Name

1,1,‘Test’

此时我再向B表添加一条数据

B表

Id,Name

1,‘Demo’

此时,当我使用linq将B表的数据删除时,

A表会变成

A表

Id,BId,Name

1,Null,‘Test’

 

请问。。。这是linq自己的特殊技能吗?

临冰听雪丶的主页 临冰听雪丶 | 初学一级 | 园豆:175
提问于:2018-01-04 14:31
< >
分享
最佳答案
0

ji级联删除的几种处理方式.其中一种就是像你这样

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2018-01-04 14:42

所以这是架构的自带的吗?

临冰听雪丶 | 园豆:175 (初学一级) | 2018-01-04 16:07

@临冰听雪丶: 是的.是可以配置的.你搜efcore 级联删除.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-01-04 16:19

@吴瑞祥: 我搜到的

modelBuilder.Entity<子表>().HasRequired(r => r.父表).WithMany(m => m.子表集).WillCascadeOnDelete(true);

   //禁用一对一关联删除
            modelBuilder.Conventions.Remove<OneToOneConstraintIntroductionConvention>();

            // 禁用一对多级联删除
            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

            // 禁用多对多级联删除
            modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();

 

都不起作用。。。

临冰听雪丶 | 园豆:175 (初学一级) | 2018-01-05 14:26

@吴瑞祥: modelBuilder.Entity<子表>().HasRequired(r => r.父表).WithMany(m => m.子表集).WillCascadeOnDelete(false);

临冰听雪丶 | 园豆:175 (初学一级) | 2018-01-05 14:26

@临冰听雪丶: 这是旧版本的吧.新版本语法已经不这样了.话说你不看官方文档的吗..

吴瑞祥 | 园豆:29449 (高人七级) | 2018-01-05 14:30

@临冰听雪丶: https://docs.microsoft.com/zh-cn/ef/core/modeling/relationships

你给找了下文档.往下拉就能看到级联删除的配置

吴瑞祥 | 园豆:29449 (高人七级) | 2018-01-05 14:42

@吴瑞祥: 我都把ef升级到6.2.0了。依然没有看到官方文档中提到的    .HasOne(p => p.Blog) 和.OnDelete(DeleteBehavior.Cascade);

临冰听雪丶 | 园豆:175 (初学一级) | 2018-01-09 16:27

@临冰听雪丶: 啊..我的问题..这个是efcore的..要是ef6.2得另外找他的文档...

吴瑞祥 | 园豆:29449 (高人七级) | 2018-01-09 16:53

@吴瑞祥: 好吧,不过我选择了一个新的办法,不禁用了,换一下添加删除的顺序好了。。。谢谢拉~

临冰听雪丶 | 园豆:175 (初学一级) | 2018-01-09 17:45
其他回答(1)
0

这是导航属性的问题,就是内部是认为是一个对象。那个对象不存在了,那就是NULL

数据酷软件 | 园豆:130 (初学一级) | 2018-01-04 14:57

这个是哪里可以设置的吗?还是说默认只能这样。

支持(0) 反对(0) 临冰听雪丶 | 园豆:175 (初学一级) | 2018-01-04 16:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册