У меня есть контроллер WebApi 2. Я хочу использовать патч OData на одном из контроллеров. Вот что я сделал до сих пор.OData Patch не обновляет базу данных
я добавил следующую строку в 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));
}
Я вижу, что контроллер обнаруживает метод исправления и кажется, что он пытается обновить, но значение никогда не обновляется.
Я также добавляю точку останова в value.Patch(auth)
и проверял changedProperties
, но ничего не существует. Я пытался выяснить, что вызывает это, но у вас нет подсказки.
я столкнулся же проблема, но только со значениями целочисленных типов. значения string и bool обновляются, но не целые. любая идея почему? Я пробовал все в почтальоне. Он потратил впустую мои 3 дня –