C# 使用EF Core和OData,应用程序如何根据相关实体中的属性进行排序?
在使用EF Core和OData的AspNet Core应用程序中,如何实现按相关实体中的属性排序的网格?下面是一个包含地址的网格的简化示例,用户可以单击State列按状态排序:C# 使用EF Core和OData,应用程序如何根据相关实体中的属性进行排序?,c#,asp.net-core,odata,ef-core-2.2,C#,Asp.net Core,Odata,Ef Core 2.2,在使用EF Core和OData的AspNet Core应用程序中,如何实现按相关实体中的属性排序的网格?下面是一个包含地址的网格的简化示例,用户可以单击State列按状态排序: public class Address { public int Id { get; set; } public string Line1 { get; set; } public int StateId { get; set; } public State State { get;
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);
}
}
当我通过在上下文忽略的Address
中添加StateName=>State.Name
属性来展平关系时,用户无法在网格中的该列上排序。最好的方法是,我可以在数据上下文中将该属性映射到State.Name
,但我不太清楚如何做到这一点
在客户机上,我们使用OData进行排序、分页和筛选。如果我们尝试使用OData的$expand
将网格映射到非展平对象,以关闭State
属性,那么我们如何为网格显示展平,然后为排序取消展平呢?这可能会有帮助: