我有一个支持oData的web api功能
[EnableQuery()]
public IQueryable<StoreCommand> Get()
{
return _storeCommandService.GetAllStoreCommands().AsQueryable();
}
服务层调用基于Mongodb的Repository模式的实现。
public IEnumerable<StoreCommand> GetAllStoreCommands()
{
return _uow.StoreCommands.GetAll();
}
其中GetAll在Repository层实现,如
public IList<TEntity> GetAll()
{
return _collection.FindAllAs<TEntity>().ToList();
}
其中_collection是c#驱动程序的MongoCollection。
当我打电话时
http://localhost:xxxx/api/storeCommandsrest?$skip=0&$top=10&$orderby=Name
我获得了前十名的记录,但它从数据库中提取了所有记录并将我送回前10名。 请指导我们如何从数据库中仅提取所需的集合。
答案 0 :(得分:0)
评论转而回答:
您没有从GetAllStoreCommands()返回IQueryable。您的返回类型必须是IQueryable()。要从驱动程序中获取它,它应该是_collection.AsQueryable()。