如何让动态edm模型支持odata查询

How to make dynamic edm model support odata queries

我一直在尝试将 https://github.com/OData/ODataSamples/tree/master/WebApi/v4/DynamicEdmModelCreation 中的 DynamicEdmModelCreation 示例改编成可用的 v3 版本(我想将 odata 直接加载到 excel,它还不支持 odata v4)

我在设置中添加了 config.AddODataQueryFilter() 并在控制器的 get 方法中添加了 [EnableQuery],但我现在收到异常:

A first chance exception of type 'System.Runtime.Serialization.SerializationException' occurred in System.Web.Http.OData.dll

Additional information: 'EnumerableQuery`1' cannot be serialized using the ODataMediaTypeFormatter.

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/OData/src/System.Web.Http.OData/OData/Formatter/ODataMediaTypeFormatter.cs#L577

抛出的

我的 Controller 的 Get 方法返回 EdmEntityObjectCollection 是个问题吗?我原以为只需添加 EnableQuery 属性就足以让框架知道如何将该查询操作应用于我返回的 EdmEntityObjectCollection(这将包含比潜在需要更多的数据)

你做的是对的,但是OData WebApi现在不支持un-typed场景下的query options,关于这个特性有一个openissue