gpt4 book ai didi

动态 Web api odata 元数据附加属性

转载 作者:行者123 更新时间:2023-12-02 13:48:38 25 4
gpt4 key购买 nike

在使用v4协议(protocol)的Web api odata中,如何添加附加属性?

完全动态,无 Entity Framework ,无反射提供程序,
元数据是在调用 url 时动态生成的。

编辑
Web Api 请求网址:
http://locahost/Service1/EntitySet1

实际的json输出:

{"@odata.context":"some url", value:[{"id":1}]}  

预期的 json 响应:

{"@odata.context":"some url", value:[{"id":1}], "ExtraCustomAttribute": "custom value"}  

如何在响应 web api odata v4 json 中添加此自定义属性?

在元数据调用(edmx 响应)和实例负载调用(json 响应)中。

最佳答案

在 OData v4 中,至少有两个选项可以实现该行为:开放类型、实例注释。这取决于您的要求或设计决策。

开放类型被添加为结构化类型,除了类型定义中声明的任何属性之外,还包含动态属性。开放类型可让您增加数据模型的灵 active 。

本教程:

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/use-open-types-in-odata-v4

演示如何在 ASP.NET Web API OData 中使用开放类型。

实例注释的描述如下:docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html#_Toc372793088

在您的情况下,尝试将您的实体声明为:

ODataModelBuilder builder = new ODataModelBuilder();

ComplexTypeConfiguration<YourEntity> pressType = builder.ComplexType<YourEntity>();
// ...
pressType.HasDynamicProperties(c => c.ExtraCustomAttribute);
// public IDictionary<string, object> ExtraCustomAttribute{ get; set; }

并在 get 操作方法中根据需要生成实体。另一个选项可用于控制条目序列化,请在此处查看

https://aspnetwebstack.codeplex.com/wikipage?title=OData%20formatter%20extensibility

关于动态 Web api odata 元数据附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727968/

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