gpt4 book ai didi

c# - .NET ODataController 类返回结构上与 Controller 类型无关的类型集合

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:14 25 4
gpt4 key购买 nike

我有课,MyClassController继承自 ODataController .我已经能够使用“自动”路由来访问缩放器集合类型的属性,例如 /path/to/MyClass(100)/SomeProperty .我现在需要返回一个在结构上与 MyClass 无关的类的集合(即,没有连接两个类的引用)但从逻辑上讲,两者之间存在关系。我希望能够做类似 GET 的事情婷/path/to/MyClass(100)/RelatedThings/ .我该如何设置?我正在设置 MyClass及其相关类使用 ODataConventionModelBuilder.EntitySet<>Application_Start .

我正在使用 Microsoft.OData.Core 6.13.0 (OData 4.0)。

编辑:我从这个问题中遗漏了一些细节,我没有意识到这些细节与我在应用程序其他地方做出的一些设计决策相关,所以我接受了最好的答案在不考虑这些细节的情况下解决了这个问题。我最终在返回相关内容的 MyClass Controller 中创建了一个绑定(bind)的 OData 函数。我发现如果我不包含命名空间或尾部斜线,HTTP 请求就会产生错误。即 /path/to/MyClass(100)/Default.RelatingThings/作品。我正在研究消除尾部斜杠和命名空间的需要的方法。 (编辑:在设置 OData 路由时调用 config.EnableUnqualifiedNameCall(true);参见 https://stackoverflow.com/a/35156885/1102726。)

最佳答案

您的 OData 路由不必匹配存储模式中的关系;即,缺乏结构关系是无关紧要的。只需向 MyClass 添加一个属性,类似于以下内容:

public ICollection<Thing> RelatedThings { get; set; }

然后为属性定义一个action方法:

public IQueryable<Thing> GetRelatedThings([FromODataUri] int key)
{
// Fill-in data access logic.
}

您不会请求 /path/to/MyClass(100)?$expand=RelatedThings,但您可以请求 /path/to/MyClass(100 )/RelatedThings 随心所欲。

关于c# - .NET ODataController 类返回结构上与 Controller 类型无关的类型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35040746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com