【发布时间】:2016-05-04 14:30:12
【问题描述】:
我有一个类,MyClassController,它继承自 ODataController。我已经能够使用“自动”路由来访问缩放器集合类型的属性,例如,/path/to/MyClass(100)/SomeProperty。我现在需要返回一个在结构上与MyClass 无关的类的集合(即,没有连接这两个类的引用),但从逻辑上讲,两者之间存在关系。我希望能够做类似GETting /path/to/MyClass(100)/RelatedThings/ 的事情。我该如何设置?我正在使用Application_Start 中的ODataConventionModelBuilder.EntitySet<> 设置MyClass 及其相关类。
我正在使用 Microsoft.OData.Core 6.13.0 (OData 4.0)。
编辑:我从这个问题中遗漏了一些我没有意识到与我在应用程序其他地方做出的一些设计决策相关的细节,所以我接受了最好的答案在不考虑这些细节的情况下解决了这个问题。我最终在返回相关内容的 MyClass 控制器中创建了一个绑定的 OData 函数。我发现如果我没有包含命名空间或尾部斜杠,HTTP 请求会产生错误。也就是说,/path/to/MyClass(100)/Default.RelatingThings/ 有效。我正在研究消除对斜杠和命名空间的需求的方法。 (编辑:在设置 OData 路由时调用 config.EnableUnqualifiedNameCall(true);请参阅 https://stackoverflow.com/a/35156885/1102726。)
【问题讨论】: