我有一個WebApi 2控制器。我想在其中一個控制器上使用OData補丁。這是我到目前爲止所做的。OData補丁沒有更新數據庫
我在控制器中添加了以下行WebApiConfig
config.MapODataServiceRoute("odata", "odata", GenerateEdmModle());
private static Microsoft.OData.Edm.IEdmModel GenerateEdmModle()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Auth>("Auths");
return builder.GetEdmModel();
}
然後,這是我想要使用補丁方法
[HttpPatch]
public async Task<IHttpActionResult> PatchAuth(int id, Delta<Auth> value)
{
var auth = await db.Auth.FindAsync(id);
if (auth == null) return NotFound();
System.Diagnostics.Debug.WriteLine(auth.direction, auth.id);
System.Diagnostics.Debug.WriteLine("Patching");
try
{
value.Patch(auth);
await db.SaveChangesAsync();
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e.Message);
return InternalServerError(e);
}
return Ok(value);
}
這裏就是我如何從它發送角服務
// patch auth
service.patchAuth = function (authId, auth) {
var request = $http({
method: 'PATCH',
url: baseUrl + 'api/Auths',
data: JSON.stringify(auth),
params: { id: authId },
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
return (request.then(handleSuccess, handleError));
}
這是我在小提琴手 看
我看到控制器找到了Patch Method,看起來好像在試圖更新,但是這個值永遠不會被更新。
我還在value.Patch(auth)
上添加了一個斷點並檢查了changedProperties
,但沒有任何內容。我一直在試圖找出造成這種情況的原因,但沒有得到任何線索。
我面臨着同樣的問題,但只能用整數類型的值。字符串和布爾值正在更新,但不是整數。任何想法爲什麼?我已經嘗試了郵遞員的一切。它浪費了我的3天 –