如何在MicrosoftASP.NETWebAPIOData中使用Delta和CodeFirstJsonMediaTypeFormatter有什么问题?我正在尝试在我的ASP.netwebapi应用程序中启用修补程序。我正在使用代码优先实体框架。我有以下方法标头,我可以设置一个断点,它会命中:[AcceptVerbs("PATCH")]publicasyncTaskPatch(longappId,longid,DeltaformGroup)但是,当我调用formGroup.Patch(entity),没有对我的实体进行任何更改。如果我将以下内容放入立即窗口:formGroup.GetChangedPropertyNames()那么集合是空的,这似乎是错误的。我尝试了什么?我一直在参考以下示例http://techbrij.com/http-patch-request-asp-net-webapihttp://www.strathweb.com/2013/01/easy-asp-net-web-api-resource-updates-with-delta/JsonMediaTypeFormatter似乎不知道如何正确构建Delta对象,但在第二个链接中,filip似乎表明它应该在没有oDataMediaTypeFormatter的情况下工作。我已经开始尝试将我的模型序列化为EDMX表示形式,然后从那里提取CSDL,这样我就可以创建一个oDataMediaTypeFormatter,但我也遇到了障碍,而且它似乎有点矫枉过正。如果有人能对此有所了解,将不胜感激。如果需要更多信息,请联系我们。编辑:这是SimpleFormGroup的类定义:publicclassSimpleFormGroup{publicintLastUpdate;公共字符串标识符;公共字符串标题;publicintDisplayOrder;这是我发送的数据:Content-Type:'application/json'{"DisplayOrder":"20}谢谢,Pete有趣的是,看起来Delta的int成员在JSON中不起作用。不幸的是,Delta是专门创建的对于OData。如果Delta似乎不与OData以外的任何格式化程序一起工作,那么这是巧合而不是故意的。好消息是没有什么可以阻止您为JSON定义自己的PATCH格式,我会如果没有人已经编写了更适合Json.NET的版本,我们会感到惊讶。我们可能会在未来的WebAPI版本中重新打补丁,并尝试为格式化程序提供一致的故事。感谢Youssef调查并找出原因不工作。希望能解决这个问题。在深入了解oData包源之后,我设法自己解决了这个问题。我选择实现另一个包含逻辑的MediaTypeFormatter,因为它提供了对HttpContent的轻松访问,但还有其他方法可以实现这一点。关键部分是弄清楚如何解释代码优先模型,请参见下面的注释行://此行将允许您解释代码优先模型中的所有元数据builder.EntitySet("EfContext");varmodel=builder.GetEdmModel();varodataFormatters=ODataMediaTypeFormatters.Create(模型);vardelta=content.ReadAsAsync(type,odataFormatters).Result;vartcs=newTaskCompletionSource();tcs.SetResult(增量);返回tcs.Task;希望这可以让某人头疼!以上就是C#学习教程:如何在MicrosoftASP.NETWebAPIOData中使用Delta和CodeFirstJsonMediaTypeFormatter分享的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
