2014-07-08 73 views
0

我有一個數據結構,看起來像這樣:嵌套的Include With排序

main(main_id, name) 
container(container_id), order, name) 
item(item_id, name) 
item_order(item_order_id, order, item_id) 
  • 有容器和主之間的多對一的關係
  • 有一個許多人item_order之間的一個關係和容器
  • item_order和item之間有一對一的關係(同一個項目可以顯示在多個容器中,這就是爲什麼訂購信息存儲在一個單獨的表格中,而不是像容器一樣存儲)

我想要爲特定的主要做什麼是升序選擇所有的容器,以及所有的項目(通過他們的訂單對象)從小到大。

我已經試過The Example I Found Here,它對分類容器很有效,我弄不清楚的是如何擴展它以對容器內的項目進行排序。

有沒有人有任何想法如何做到這一點?

回答

2

你不行。 EF按照它們碰巧來自數據庫的順序實現嵌套集合。我們不能做像context.containers.Include(c => c.Items.OrderBy(...))這樣的事情。

這是asked before是否Include方法可能有一個OrderBy,但到目前爲止它沒有。偶爾會有一種痛苦,但我不認爲這會很快改變。有一些備選方案:

  • 訂單中的項目所需的(例如,用於顯示)時

  • 項目容器和物品,其中物品被排序的視圖模型。

  • container中創建類似SortedItems的(未映射)屬性。但是請注意,只有在對象已經物化時才能解決該屬性,像context.containers.Select(c => c.SortedItems)這樣的查詢會引發錯誤。