我几乎可以找到有关OData的所有信息,都是基于EF或In Memory集合。但是,在现实世界中,我认为大多数项目都会封装ef实体(例如,转换为视图模型),而不是将EF实体直接暴露给webapi。
因此,解决这种情况的解决方案是将所有记录加载到内存中并将其转换为视图模型。
[EnableQuery]
[HttpGet]
public IQueryable<NodeViewModel> Get()
{
var colls= _nodeRepo.GetAll().Select(itm =>
_mapper.Map<NodeViewModel>(itm)).AsQueryable();
return colls;
}
如您所见,如果我们有很多记录,它的性能将会很差。
那么我该如何使用OData,但仍然过滤存储库中的记录?