首页 > 解决方案 > 使用 EF Core 和 OData,应用程序如何按相关实体中的属性进行排序?

问题描述

在我们使用 EF Core 和 OData 的 AspNet Core 应用程序中,如何实现按相关实体中的属性排序的网格?这是一个简化的网格示例,其中包含用户可以单击“状态”列按状态排序的地址:

public class Address
{
    public int Id { get; set; }
    public string Line1 { get; set; }
    public int StateId { get; set; }
    public State State { get; set; }
}

public class State 
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class AddressRepository
{
    public IQueryable Get()
    {
        return _context.Address.Include(a => a.State);
    }
}

StateName => State.Name当我通过向上下文忽略的属性添加属性来展平关系时Address,用户无法对网格中的该列进行排序。如果我可以将该属性映射到State.Name数据上下文中,最好的办法是,但我无法完全弄清楚如何做到这一点。

在客户端,我们使用 OData 进行排序、分页和过滤。如果我们尝试使用 OData 将网格映射到非展平对象$expand以降低State属性,我们如何为网格显示展平它,然后为排序展平它?

标签: c#asp.net-coreodataef-core-2.2

解决方案


推荐阅读