【发布时间】:2019-08-14 03:27:14
【问题描述】:
有什么问题?
我正在尝试在我的 ASP.net Web api 应用程序中启用补丁。我正在使用代码优先实体框架。
我有以下方法头,我可以在其中设置断点,它会命中:
[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 }
【问题讨论】:
-
您能否添加 SimpleFormGroup 的类定义以及您在 PATCH 的请求中发送的 JSON?
-
见上文...我实际上已经找到了解决此问题的方法,但我也很想听听您的想法
-
考虑到 20 左侧的引号,这不是有效的 JSON。值周围是否有结束引号或没有开始引号?
-
我想知道 webapi 1 和 webapi 2 之间发生了什么变化。Delta 过去在 WebAPI 1 中使用 Filip 的 Delta 代码与 JSON.NET 一起工作得很好
标签: c# rest asp.net-web-api odata