protected override Exception ProcessSqlResult(SqlDataReader reader)
{
Exception exception = StoreUtilities.GetNextResultSet(base.InstancePersistenceCommand.Name, reader);
if (exception == null)
{
SaveWorkflowCommand saveWorkflowCommand = base.InstancePersistenceCommand as SaveWorkflowCommand;
InstanceLockTracking instanceLockTracking = (InstanceLockTracking)(base.InstancePersistenceContext.UserContext);
if ((this.serviceDeploymentHash != Guid.Empty) && (this.serviceDeploymentId == 0))
{
this.serviceDeploymentId = reader.GetInt64(1);
PutServiceDeploymentId();
exception = StoreUtilities.GetNextResultSet(base.InstancePersistenceCommand.Name, reader);
}
if (exception == null)
{
if (!base.InstancePersistenceContext.InstanceView.IsBoundToLock)
{
long instanceVersion = reader.GetInt64(1);
instanceLockTracking.TrackStoreLock(base.InstancePersistenceContext.InstanceView.InstanceId, instanceVersion, this.DependentTransaction);
base.InstancePersistenceContext.BindAcquiredLock(instanceVersion);
}
if (saveWorkflowCommand.InstanceData.Count > 0)
{
base.InstancePersistenceContext.PersistedInstance(saveWorkflowCommand.InstanceData);
}
SaveWorkflowAsyncResult.UpdateKeyData(base.InstancePersistenceContext, saveWorkflowCommand);
foreach (KeyValuePair <XName, InstanceValue> property in saveWorkflowCommand.InstanceMetadataChanges)
{
base.InstancePersistenceContext.WroteInstanceMetadataValue(property.Key, property.Value);
}
if (saveWorkflowCommand.CompleteInstance)
{
base.InstancePersistenceContext.CompletedInstance();
}
if (saveWorkflowCommand.UnlockInstance || saveWorkflowCommand.CompleteInstance)
{
instanceLockTracking.TrackStoreUnlock(this.DependentTransaction);
base.InstancePersistenceContext.InstanceHandle.Free();
}
}
else if (exception is InstanceLockLostException)
{
base.InstancePersistenceContext.InstanceHandle.Free();
}
}
return(exception);
}