2010-01-15 52 views
3

我想要調用ObjectContext中的方法,該方法返回EntityCollection,並按默認的方式對其進行排序。例如,假設我有以下Category表/類:默認情況下,我可以在EntityFramework中獲得自定義的已排序EntityCollection嗎?

  • 類別ID(PK)
  • 名稱
  • PARENTID(FK_Category)外鍵 指向CATEGORYID本身。

(此表是類別和子類別的樹狀結構基礎)現在

,在我的數據模型中,public partial class Category : EntityObject有它返回具有PARENTID ==類別ID的所有分類,在其他屬性單詞,EntityCollection<Category> SubCategories

好了,現在我想通過使用中繼器在我的頁面來顯示所有的類別和子類別:代碼

<asp:Repeater ID="rptSubCategories" runat="server"> 
<ItemTemplate> 
    <%# Eval("CategoryID") %> - <%# Eval("Name") %> 

    <asp:Repeater ID="rptSubCategoryCategories" runat="server" DataSource='<%#Eval("SubCategories")) %>'> 
    <ItemTemplate> 
     <%# Eval("CategoryID") %> - <%# Eval("Name") %> 
    </ItemTemplate> 
    </asp:Repeater> 

</ItemTemplate> 
</asp:Repeater> 

那麼後面,我將DataSource:

IList<Category> categoryList = new CategoryProvider().GetAll(); 
rptSubCategories.DataSource = categoryList; 
rptSubCategories.DataBind(); 

簡單,一切作品!除此之外,rptSubCategoryCategories不會按名稱給出排序的類別。我發現做到這一點的唯一方法,就是它的DataSource從改變:

到:

DataSource='<%# ((EntityCollection<Category>)Eval("SubCategories")).OrderBy(p => p.Name) %>' 

,但我希望我可以做別的事情有一個默認的排序,所以我不需要調用OrderBy。類似於我們在DynamicData中所做的屬性,請參閱教程http://www.asp.net/learn/3.5-SP1/video-291.aspx 使用DisplayColumnAttribute設置實體的默認排序列。除非有人告訴我,我想要做的事情是不可能的。

使用.NET 4.0 BETA 2

謝謝,我感謝任何職位!

回答

3

據我所知,這是不可能的。

您可以創建一個額外的屬性稱爲SortedSubCategories

例如

 public EntityCollection<Category> SortedSubCategories 
     { 
      get 
      { 
       return SubCategories.OrderBy(p => p.Name); 
      } 
     } 

我很好奇,爲什麼使用OrderBy這樣的問題?

+0

嘿willbt!我期待着這個答案,只是想確保這是不可能的。我仍然希望你有人證明我們錯了。原因僅僅是爲了使代碼看起來更漂亮,就是這樣。你在這件事情上幫助我,導致目前的做法看起來很難看。非常感謝你! – 2010-01-15 21:03:50

相關問題