使用 ODATA 控制器方法重载
public IQueryable<TD> Get(ODataQueryOptions<OrdersViewsDto> options)
我在其中收到 OrdersViewsDto 类型的设置
然后我得到类型为 OrdersViews 的所有实体
var emp = db.OrdersViews.AsQueryable();
当我尝试应用请求中传递的选项时
if (options.Top != null)
{
emp = options.Top.ApplyTo(emp , new ODataQuerySettings());
}
结果我得到一个错误
Не удается использовать выражение типа "System.Data.Entity.Core.Objects.ObjectQuery`1[Data.Entities.OrdersViews]" для параметра типа "System.Linq.IQueryable`1[Data.Dto.OrdersViewsDto]" метода "System.Linq.IQueryable`1[Data.Dto.OrdersViewsDto] Take[OrdersViewsDto](System.Linq.IQueryable`1[Data.Dto.OrdersViewsDto], Int32)"
据我了解,这是因为我从数据库中获取了 OrdersViews 类型的实体,并尝试应用 OrdersViewsDto 类型的设置。这实际上是我需要应用什么操作来避免此错误的问题,例如,从 ODataQueryOptions 类型的对象获取 ODataQueryOptions 类型的对象
结果我是这样做的,但是如果OrdersViews里面字段少或者跟OrdersViewsDto不一致,那么就会报错