当我定义我的终点API时,返回所有列,oData $ filter,$ Skip,$ filter工作正常。
[EnableQuery]
public IQueryable<MyList> GetMyLists()
{
return db.MyLists;//directly from entity table
}
但是当我只选择如下所示的某些列时,oData $ filter,$ Skip,$ filter失败。有什么想法吗?
public IQueryable<MyResult> GetMyLists()
{
return db.MyLists.Select(x => new MyResult
{
Trade_Name = x.Trade_Name,
price = x.price,
remarks = x.remarks,
Comment = x.Comment,
GenericGroupNumber = x.GenericGroupNumber
});
}
我将MyResult类定义为:
public class MyResult
{
public string Trade_Name;
public decimal? price;
public string remarks;
public string Comment;
public string GenericGroupNumber;
}
非常感谢任何指导。
答案 0 :(得分:0)
MyResult类没有[key]列,也没有映射到EDMX模型中的表。它被认为是一个复杂的实体(如存储过程)。 因此,您无法应用$ filter,$ skip。
答案 1 :(得分:0)
oData旨在与WebApiConfig.cs文件中的EDMX模型中描述的实体一起使用,除此之外的任何实体都不允许您应用$ filter,$ skip等。
您需要在EDMX模型中定义该实体,并根据实体名称将其放置在自己命名的控制器中,以使其正常工作。
class MyResultsController : ApiController {
public IQueryable<MyResult> GetMyResults()
{
return db.MyLists.Select(x => new MyResult
{
Trade_Name = x.Trade_Name,
price = x.price,
remarks = x.remarks,
Comment = x.Comment,
GenericGroupNumber = x.GenericGroupNumber
});
}
}
然后确保您在MyResult
。
WebApiConfig