entity删除实体时,如何置空外键。

cnuusw 2015-07-04 07:43:31
例如商品分类和商品明细。当删除商品分类时,如何将商品明细对应商品分类的的外键置空?在sqlServer里,可以手动设置为删除时置空,但如此操作太麻烦,能否在model实体中加标记或者在context中加代码实现?
...全文
270 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
景影随形 2016-04-30
  • 打赏
  • 举报
回复

create tabel users(
    id int primary key identity(1,1)
);

create passages(
    id int primary key identity(1,1),
    userID int foreign key references users(id)
         on update cascade on delete set null
);
winner2050 2015-07-05
  • 打赏
  • 举报
回复
这种是数据库表驱动开发的想法,很low。 就算非要支持删除基础数据,而不影响关联数据的其他数据。 你得作个接口,一但这个类实现这个接口就使用逻辑删除。
  • 打赏
  • 举报
回复
反过来说,如果要修改某一批商品的分类,那么这是业务操作,你让EF如何敢想当然地替你把它改成null?那样它也太随便、太武断了。
  • 打赏
  • 举报
回复
引用 2 楼 cnuusw 的回复:
我删除商品分类时必须先修改该分类下的所有商品的外键为空,才能删除该分类,否则系统就报错。
你的这个说法本身就不和逻辑啊。如果要删除分类,应该先删除该分类下的所有商品,怎么能仅仅删除所有商品的外键呢?
cnuusw 2015-07-04
  • 打赏
  • 举报
回复
楼主说的那个属性是在sqlServer里设置的吧,这个我知道。能不能在entity里直接配置这个。我记得以前看到entity介绍时提到过,设置为可空的外键时,删除实体sql会自动置空,但是我测试发现不是这么回事。我删除商品分类时必须先修改该分类下的所有商品的外键为空,才能删除该分类,否则系统就报错。
tcmakebest 2015-07-04
  • 打赏
  • 举报
回复
外键的属性中就有主表删除时,子表外键置空的选项,不知道楼主说的手动是什么意思

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧