当您将实体标记为已删除时,它也会标记其子项,是否有办法仅将父项标记为已删除?

时间:2016-12-23 16:56:07

标签: breeze

当您通过设置entityAspect将实体标记为已删除时,它也会将其子项标记为已删除。有没有办法只删除父母?还是一种在事后发生并标记孩子不变的方法?

2 个答案:

答案 0 :(得分:0)

你不想搞乱导航属性 - 我马上告诉你。我的建议是模拟你的问题,好像你不得不用T-SQL问它。

在T-SQL中,你可以删除父记录,但留下孩子吗?不,我的意思是你可以,但为什么呢?您刚刚在数据库中创建了孤立的子记录。你要删除外键但保留数据吗?真是一团糟。

您能够在Breeze中映射父子关系的唯一原因是因为基于数据库中定义的父/子关系创建的导航属性。如果您无法在数据库中执行此操作,则无法在Breeze中执行此操作。

如果模型拒绝让步并且您决定继续使用此功能,则需要返回未通过关系链接的数据。您可以为父级和子级创建视图...但您需要手动管理负载。如果您的实体基于视图,它们可能不会更新。

抱歉,没有要发布的代码。很久以前我放弃了这个。

答案 1 :(得分:0)

如果删除父项,Breeze不会将子实体标记为已删除。我们还没有在Breeze中实现级联删除。您的应用程序中必须有代码才能执行此操作。 Breeze通过清除外键属性来断开子实体与已删除父节点的连接,因此子实体将处于已修改状态。但是,您将无法成功保存数据库中没有违反FK约束的情况。您必须在服务器上实现级联删除或手动删除子实体。