其他分享
首页 > 其他分享> > 我可以默认情况下在EntityFramework中获得自定义排序的EntityCollection吗?

我可以默认情况下在EntityFramework中获得自定义排序的EntityCollection吗?

作者:互联网

我想在ObjectContext中调用一个返回EntityCollection的方法,并按默认方式对它进行排序.例如,假设我有以下类别表/类:

>类别ID(PK)
>名称
> ParentID(FK_Category)外键
指向CategoryID本身.

(此表是类别和子类别的树结构的基础)

现在,在我的数据模型中,公共部分类Category:EntityObject具有一个属性,该属性返回所有具有ParentID == CategoryID的类别,换句话说,EntityCollection< Category>.子类别.

好了,现在我想使用Repeater在我的页面中显示所有类别和子类别:

<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>

然后在后面的代码中,设置数据源:

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

简单,一切正常!除此之外,rptSubCategoryCategories不会提供按名称排序的类别.我发现这样做的唯一方法是将其DataSource从以下位置更改:

DataSource='<%# Eval("SubCategories")) %>'

至:

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

但是我希望我可以做其他事情来使默认排序有效,所以我不需要调用OrderBy.遵循http://www.asp.net/learn/3.5-SP1/video-291.aspx的教程,就像我们在DynamicData中所做的Attributes一样
使用DisplayColumnAttribute设置实体的默认排序列.除非有人告诉我,我要做什么是不可能的.

使用.NET 4.0 BETA 2

谢谢,我感谢任何帖子!

解决方法:

据我所知这是不可能的.

您可以创建一个名为SortedSubCategories的附加属性.

例如

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

我很好奇,为什么为什么要使用OrderBy这样的问题?

标签:asp-net,attributes,c,entity-framework
来源: https://codeday.me/bug/20191210/2100941.html