public void Update(string id, JObject body) { PatchRequest2Compliant patchRequest = null; PatchRequestSimple patchSimple = null; try { patchRequest = body.ToObject <PatchRequest2Compliant>(); } catch (Newtonsoft.Json.JsonException) { } if (patchRequest == null) { patchSimple = body.ToObject <PatchRequestSimple>(); } if (null == patchRequest && null == patchSimple) { string unsupportedPatchTypeName = patchRequest.GetType().FullName; throw new NotSupportedException(unsupportedPatchTypeName); } Core2User usertoModify = this._context.CompleteUsers().FirstOrDefault((user) => user.Identifier.Equals(id, StringComparison.Ordinal)); if (patchRequest != null) { if (usertoModify != null) { foreach (PatchOperation2SingleValued op in patchRequest.Operations) { if (op is PatchOperation2SingleValued singleValued) { PatchOperation patchOp = PatchOperation.Create(OperationValue.getOperationName(singleValued.OperationName), singleValued.Path.ToString(), singleValued.Value); usertoModify.Apply(patchOp); usertoModify.Metadata.LastModified = DateTime.Now; } } } } else if (patchSimple != null) { if (usertoModify != null) { foreach (PatchOperation op in patchSimple.Operations) { usertoModify.Apply(op); usertoModify.Metadata.LastModified = DateTime.Now; } } } this._context.SaveChanges(); }