问题描述
例如商品分类和商品明细。当删除商品分类时,如何将商品明细对应商品分类的的外键置空?在sqlServer里,可以手动设置为删除时置空,但如此操作太麻烦,能否在model实体中加标记或者在context中加代码实现?
解决方案
解决方案二:
外键的属性中就有主表删除时,子表外键置空的选项,不知道楼主说的手动是什么意思
解决方案三:
楼主说的那个属性是在sqlServer里设置的吧,这个我知道。能不能在entity里直接配置这个。我记得以前看到entity介绍时提到过,设置为可空的外键时,删除实体sql会自动置空,但是我测试发现不是这么回事。我删除商品分类时必须先修改该分类下的所有商品的外键为空,才能删除该分类,否则系统就报错。
解决方案四:
引用2楼cnuusw的回复:
我删除商品分类时必须先修改该分类下的所有商品的外键为空,才能删除该分类,否则系统就报错。
你的这个说法本身就不和逻辑啊。如果要删除分类,应该先删除该分类下的所有商品,怎么能仅仅删除所有商品的外键呢?
解决方案五:
反过来说,如果要修改某一批商品的分类,那么这是业务操作,你让EF如何敢想当然地替你把它改成null?那样它也太随便、太武断了。
解决方案六:
这种是数据库表驱动开发的想法,很low。就算非要支持删除基础数据,而不影响关联数据的其他数据。你得作个接口,一但这个类实现这个接口就使用逻辑删除。
解决方案七:
createtabelusers(idintprimarykeyidentity(1,1));createpassages(idintprimarykeyidentity(1,1),userIDintforeignkeyreferencesusers(id)onupdatecascadeondeletesetnull);
时间: 2024-07-31 18:36:28