Fixing misc edit bugs (async/await, table not found) (#300)

* Async/await issue when requesting a edit/subset
* Returning good error messages when table/view doesn't exist
This commit is contained in:
Benjamin Russell
2017-03-31 13:59:44 -07:00
committed by GitHub
parent 42498446cc
commit ae178efe3e
2 changed files with 17 additions and 5 deletions

View File

@@ -198,18 +198,26 @@ namespace Microsoft.SqlTools.ServiceLayer.EditData
}); });
} }
internal Task HandleSubsetRequest(EditSubsetParams subsetParams, internal async Task HandleSubsetRequest(EditSubsetParams subsetParams,
RequestContext<EditSubsetResult> requestContext) RequestContext<EditSubsetResult> requestContext)
{ {
return HandleSessionRequest(subsetParams, requestContext, session => try
{ {
EditRow[] rows = session.GetRows(subsetParams.RowStartIndex, subsetParams.RowCount).Result; EditSession session = GetActiveSessionOrThrow(subsetParams.OwnerUri);
return new EditSubsetResult
EditRow[] rows = await session.GetRows(subsetParams.RowStartIndex, subsetParams.RowCount);
EditSubsetResult result = new EditSubsetResult
{ {
RowCount = rows.Length, RowCount = rows.Length,
Subset = rows Subset = rows
}; };
});
await requestContext.SendResult(result);
}
catch(Exception e)
{
await requestContext.SendError(e.Message);
}
} }
internal Task HandleUpdateCellRequest(EditUpdateCellParams updateParams, internal Task HandleUpdateCellRequest(EditUpdateCellParams updateParams,

View File

@@ -77,6 +77,10 @@ namespace Microsoft.SqlTools.ServiceLayer.EditData
// A bug in SMO makes it necessary to call refresh to attain certain properties (such as IsMemoryOptimized) // A bug in SMO makes it necessary to call refresh to attain certain properties (such as IsMemoryOptimized)
smoResult.Refresh(); smoResult.Refresh();
if (smoResult.State != SqlSmoState.Existing)
{
throw new ArgumentOutOfRangeException(nameof(objectNamedParts), SR.EditDataObjectNotFound);
}
// Generate the edit column metadata // Generate the edit column metadata
List<EditColumnMetadata> editColumns = new List<EditColumnMetadata>(); List<EditColumnMetadata> editColumns = new List<EditColumnMetadata>();