c# - 使用 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
属性,我们如何为网格显示展平它,然后为排序展平它?