我的数据结构如下所示:
main(main_id, name)
container(container_id), order, name)
item(item_id, name)
item_order(item_order_id, order, item_id)
我想为特定主要做的是按升序选择所有容器,以及所有项目(通过它们的订单对象)按升序排列。
我尝试了The Example I Found Here,它对于对容器进行排序非常有用,我无法弄清楚如何扩展它以对容器中的项进行排序。
有谁知道如何做到这一点?
答案 0 :(得分:2)
你不能。 EF按照它们恰好来自数据库的顺序实现嵌套集合。我们无法做context.containers.Include(c => c.Items.OrderBy(...))
之类的事情。
Include
方法是OrderBy
是container
,但到目前为止还没有context.containers.Select(c => c.SortedItems)
。偶尔会有一种痛苦,但我不希望这种情况很快发生变化。有一些替代方案:
必要时订购商品(例如展示)
将容器和项目投影到视图模型中,在该视图模型中对项目进行排序。
在{{1}}中创建一个(未映射的)属性,如SortedItems。但请注意,此属性只能在实现对象时解决,{{1}}之类的查询会引发错误。