/// <summary> /// Handles a POST request to create an entity. /// </summary> /// <param name="edmEntityObject">The entity object to create.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The task object that contains the creation result.</returns> public async Task<IHttpActionResult> Post(EdmEntityObject edmEntityObject, CancellationToken cancellationToken) { if (!this.ModelState.IsValid) { return BadRequest(this.ModelState); } ODataPath path = this.GetPath(); IEdmEntitySet entitySet = path.NavigationSource as IEdmEntitySet; if (entitySet == null) { throw new NotImplementedException(Resources.InsertOnlySupportedOnEntitySet); } DataModificationEntry postEntry = new DataModificationEntry( entitySet.Name, path.EdmType.FullTypeName(), null, null, edmEntityObject.CreatePropertyDictionary()); #if BATCH // TODO (.NETCORE) RestierChangeSetProperty changeSetProperty = this.Request.GetChangeSet(); if (changeSetProperty == null) { #endif ChangeSet changeSet = new ChangeSet(); changeSet.Entries.Add(postEntry); SubmitResult result = await Api.SubmitAsync(changeSet, cancellationToken); #if BATCH // TODO (.NETCORE) } else { changeSetProperty.ChangeSet.Entries.Add(postEntry); await changeSetProperty.OnChangeSetCompleted(); } #endif return this.CreateCreatedODataResult(postEntry.Entity); }
private async Task<IHttpActionResult> Update( EdmEntityObject edmEntityObject, bool isFullReplaceUpdate, CancellationToken cancellationToken) { ODataPath path = this.GetPath(); IEdmEntitySet entitySet = path.NavigationSource as IEdmEntitySet; if (entitySet == null) { throw new NotImplementedException(Resources.UpdateOnlySupportedOnEntitySet); } DataModificationEntry updateEntry = new DataModificationEntry( entitySet.Name, path.EdmType.FullTypeName(), RestierQueryBuilder.GetPathKeyValues(path), this.GetOriginalValues(), edmEntityObject.CreatePropertyDictionary()); updateEntry.IsFullReplaceUpdate = isFullReplaceUpdate; #if BATCH // TODO (.NETCORE) RestierChangeSetProperty changeSetProperty = this.Request.GetChangeSet(); if (changeSetProperty == null) { #endif ChangeSet changeSet = new ChangeSet(); changeSet.Entries.Add(updateEntry); SubmitResult result = await Api.SubmitAsync(changeSet, cancellationToken); #if BATCH // TODO (.NETCORE) } else { changeSetProperty.ChangeSet.Entries.Add(updateEntry); await changeSetProperty.OnChangeSetCompleted(); } #endif return this.CreateUpdatedODataResult(updateEntry.Entity); }