【问题标题】:Nested Include With Sort嵌套包含排序
【发布时间】:2014-08-29 16:32:23
【问题描述】:

我有一个看起来像这样的数据结构:

main(main_id, name)
container(container_id), order, name)
item(item_id, name)
item_order(item_order_id, order, item_id)
  • 容器和主容器之间存在多对一关系
  • item_order 和 container 之间存在多对一的关系
  • item_order 和 item 之间存在一对一的关系(同一商品可以出现在多个容器中,这就是为什么订购信息存储在单独的表中,而不是像容器一样存储在同一个表中)

我想要为特定的 main 做的是按升序选择所有容器,以及按升序选择所有项目(通过它们的 order 对象)。

我尝试过The Example I Found Here,它非常适合对容器进行分类,但我不知道如何将其扩展为对容器内的物品进行分类。

有谁知道如何做到这一点?

【问题讨论】:

    标签: c# entity-framework entity-framework-6


    【解决方案1】:

    你不能。 EF 按照它们恰好来自数据库的顺序实现嵌套集合。我们不能做像context.containers.Include(c => c.Items.OrderBy(...)) 这样的事情。

    asked before 方法是否可以有 OrderBy 一直是 asked before,但直到今天还没有。偶尔会很痛苦,但我预计这种情况不会很快改变。有一些替代方案:

    • 必要时订购物品(例如展示)

    • 将容器和项目投影到对项目进行排序的视图模型中。

    • container 中创建一个(未映射的)属性,如 SortedItems。但请注意,此属性只能在对象物化后才能处理,context.containers.Select(c => c.SortedItems) 之类的查询会引发错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多