我有一个产品odata控制器和一个产品类别odata控制器。
它们都使用实体框架实体并且具有用于odata扩展的导航方法。
这两个展开工作正常。
现在我在实体框架中添加了一个存储过程来处理从数据库返回的数据,并仍然返回一个“Product”记录。
我将实体存储过程函数返回类型设置为“Product”,并在Product odata控制器中创建一个新函数来调用实体函数并返回“Product”。
我可以从url调用该函数,并且它正确地返回一个Product实体/ json。
现在我需要调用网址上的展开来获得“产品类别”实体,但是失败。Webapi odata使用实体框架功能展开
我看过这篇文章,但这是基于非实体模型。我的实体都是正确的,运行良好。
http://beyondtheduck.com/projecting-and-the-odata-expand-query-option-possible-at-last-kinda/
你是在说, “EnableQuery” 正确确实与拓展工作。我应该更好地解释我的问题。在使用StoredProcedure和分页时,“EnableQuery”似乎不起作用。就像“PageResult”一样...... – goroth 2014-10-20 19:14:47
@goroth为什么要按照您所描述的那样使用PageResult,返回值将是单个“产品”记录。但是,如果您要返回产品集合以及分页,则可以使用“[EnableQuery(PageSize = 10)]”的返回类型作为“IQueryable”来执行此操作。 –
2014-10-21 11:21:43
关键词是“StoredProcedure”。由于存储过程将始终返回所有记录,因此我认为必须先使用“PageResults”来获取“总计数”,然后在返回结果中设置“take/skip”。 – goroth 2014-10-21 12:48:27