gpt4 book ai didi

c# - 如何使用 Microsoft ASP.NET Web API OData 中的 Delta 和 Code First\JsonMediaTypeFormatter

转载 作者:太空狗 更新时间:2023-10-29 17:43:30 26 4
gpt4 key购买 nike

问题是什么?

我正在尝试在我的 ASP.net Web API 应用程序中启用修补程序。我正在使用代码优先 Entity Framework 。

我有以下方法头,我可以在其中设置一个断点,它会命中:

[AcceptVerbs("PATCH")]
public async Task<HttpResponseMessage> Patch(long appId, long id, Delta<SimpleFormGroup> formGroup)

但是,当我调用 formGroup.Patch(entity) 时,我的实体没有发生任何变化。如果我将以下内容放入立即窗口:

formGroup.GetChangedPropertyNames()

那么这个集合是空的,这似乎是错误的。

我尝试了什么?

我一直在引用下面的例子

http://techbrij.com/http-patch-request-asp-net-webapi http://www.strathweb.com/2013/01/easy-asp-net-web-api-resource-updates-with-delta/

这似乎是 Json MediaType Formatter 不知道如何正确构建 Delta 对象的问题,但是在第二个链接中,filip 似乎建议它应该在没有 oDataMediaTypeFormatter 的情况下工作。

我已经开始尝试将我的模型序列化为 EDMX 表示,然后从那里提取 CSDL,以便我可以创建一个 oDataMediaTypeFormatter,但我也遇到了一个障碍,而且它似乎有点矫枉过正。

如果有人能阐明这一点,我们将不胜感激。如果需要更多信息,请告诉我。

编辑:

这是 SimpleFormGroup 的类定义:

public class SimpleFormGroup
{
public int LastUpdate;

public string Identifier;

public string Title;

public int DisplayOrder;
}

这是我要发送的数据:

Content-Type: 'application/json'

{ "DisplayOrder" : "20 }

最佳答案

有意思,看起来像Delta<T> with int 成员在 JSON 中不起作用。

不幸的是,Delta<T>专为 OData 创建。如果Delta<T>似乎与 OData 以外的任何格式化程序一起工作,这是巧合而不是故意的。

但好消息是,没有什么能阻止您为 JSON 定义自己的 PATCH 格式,如果没有人编写出能更好地与 Json.NET 配合使用的格式,我会感到很惊讶。我们可能会在 Web API 的 future 版本中重新审视补丁,并尝试提出一个适用于各种格式化程序的一致故事。

关于c# - 如何使用 Microsoft ASP.NET Web API OData 中的 Delta<T> 和 Code First\JsonMediaTypeFormatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729249/

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