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