【问题标题】:Updating a field for all children in self referencing relationship为自引用关系中的所有子项更新字段
【发布时间】:2011-05-16 22:06:48
【问题描述】:

大家好,

我正在使用 Entity Framework 和 ASP.NET MVC 3。在应用程序的一部分中,我在一个表(ID、ParentID 等)中有一个自引用关系。这个表还有一个状态字段。当用户更新一个状态时,它需要更新它所有孩子的状态。深度是可变的。

我希望在不使用 Load() 函数的情况下执行此操作,因为我听说效率不高。我还遇到了一种使用存储过程的方法,但我希望在 EF 中完成此功能,理想情况下仅在 POST 操作中完成。

【问题讨论】:

    标签: asp.net-mvc entity-framework asp.net-mvc-3


    【解决方案1】:

    不幸的是,实体框架在自引用关系方面非常薄弱。如果您的层次结构中可能的级别数量有限,您可以使用一些技巧,但您最好只使用存储过程。

    【讨论】:

    • 你知道这些技巧吗?我想避免存储过程,因为我不熟悉它们
    • @James:技巧包括提出一个查询来表示您想要的顶级元素,然后添加到该查询中以查找作为这些元素的子项的项目,然后添加到该查询中找到孩子的孩子等,然后使用一系列.Concat() 调用将查询连接在一起。问题是,您必须提前知道最大级别数是多少。如果您使用带有With 子句的存储过程,甚至是视图,它应该更简单、更快、更健壮。
    【解决方案2】:

    答案在这篇文章中解决:

    Changes Cascading down to children in a Tree structure ASP.NET MVC 3

    这是一个递归方法 - 即只是一个再次调用自身的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多