protected override IEnumerable EndExecuteSelect(IAsyncResult asyncResult) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "Begin"); if (_client == null) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "End: _client=null"); return(null); } IEnumerable selectResult = null; int rowsAffected = 0; try { SynchronousAsyncSelectResult syncResult = asyncResult as SynchronousAsyncSelectResult; if (syncResult != null) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "syncResult"); selectResult = syncResult.SelectResult; } else { ADXTrace.Instance.TraceInfo(TraceCategory.Application, "EndExecute"); if (!Owner.IsSingleSource) { var response = _execute != null?_execute.EndInvoke(asyncResult) : _executeFetchMultiple.EndInvoke(asyncResult); if (response != null) { var entities = response.Entities; rowsAffected = entities.Count; selectResult = ExecuteSelect(entities).ToList(); if (Owner.CacheParameters.Enabled) { IEnumerable <string> dependencies; string cacheKey; if (Request.Query != null) { dependencies = GetCacheDependencies(Request.Query, selectResult); cacheKey = GetCacheKey(Request.Query); } else { dependencies = GetCacheDependencies(Fetch, selectResult, Owner.IsSingleSource); cacheKey = GetCacheKey(Request.Query); } // insert into cache ObjectCacheManager.GetInstance().Insert(cacheKey, selectResult, dependencies); } } } else { var entity = _executeSingle.EndInvoke(asyncResult); if (entity != null) { selectResult = ExecuteSelect(new [] { entity }).ToList(); if (Owner.CacheParameters.Enabled) { var dependencies = GetCacheDependencies(Fetch, selectResult, Owner.IsSingleSource); var cacheKey = GetCacheKey(Fetch.ToFetchExpression()); // insert into cache ObjectCacheManager.GetInstance().Insert(cacheKey, selectResult, dependencies); } } } } } catch (System.Web.Services.Protocols.SoapException ex) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format("{0}\n\n{1}", ex.Detail.InnerXml, ex.ToString())); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format("Exception: {0}", e.ToString())); // raise post-event with exception CrmDataSourceStatusEventArgs selectedExceptionArgs = new CrmDataSourceStatusEventArgs(0, e); OnSelected(selectedExceptionArgs); if (!selectedExceptionArgs.ExceptionHandled) { throw; } return(selectResult); } finally { _client = null; } // raise post-event CrmDataSourceStatusEventArgs selectedArgs = new CrmDataSourceStatusEventArgs(rowsAffected, null); OnSelected(selectedArgs); ADXTrace.Instance.TraceInfo(TraceCategory.Application, "End"); return(string.IsNullOrEmpty(Owner.StaticEntityWrapperTypeName) ? selectResult : CreateEntities(selectResult)); }
protected override IEnumerable EndExecuteSelect(IAsyncResult asyncResult) { Tracing.FrameworkInformation("CrmDataSourceView", "EndExecuteSelect", "Begin"); if (_client == null) { Tracing.FrameworkInformation("CrmDataSourceView", "EndExecuteSelect", "End: _client=null"); return(null); } IEnumerable selectResult = null; int rowsAffected = 0; try { SynchronousAsyncSelectResult syncResult = asyncResult as SynchronousAsyncSelectResult; if (syncResult != null) { Tracing.FrameworkInformation("CrmDataSourceView", "EndExecuteSelect", "syncResult"); selectResult = syncResult.SelectResult; } else { Tracing.FrameworkInformation("CrmDataSourceView", "EndExecuteSelect", "EndExecute"); var response = _execute.EndInvoke(asyncResult); if (response != null) { var entities = response.Entities; rowsAffected = entities.Count; selectResult = ExecuteSelect(entities).ToList(); if (Owner.CacheParameters.Enabled) { var dependencies = GetCacheDependencies(Request.Query, selectResult); string cacheKey = GetCacheKey(Request.Query); // insert into cache ObjectCacheManager.GetInstance().Insert(cacheKey, selectResult, dependencies); } } } } catch (System.Web.Services.Protocols.SoapException ex) { Tracing.FrameworkError("CrmDataSourceView", "EndExecuteSelect", "{0}\n\n{1}", ex.Detail.InnerXml, ex); } catch (Exception e) { Tracing.FrameworkError("CrmDataSourceView", "EndExecuteSelect", "Exception: {0}", e); // raise post-event with exception CrmDataSourceStatusEventArgs selectedExceptionArgs = new CrmDataSourceStatusEventArgs(0, e); OnSelected(selectedExceptionArgs); if (!selectedExceptionArgs.ExceptionHandled) { throw; } return(selectResult); } finally { _client = null; } // raise post-event CrmDataSourceStatusEventArgs selectedArgs = new CrmDataSourceStatusEventArgs(rowsAffected, null); OnSelected(selectedArgs); Tracing.FrameworkInformation("CrmDataSourceView", "EndExecuteSelect", "End"); return(string.IsNullOrEmpty(Owner.StaticEntityWrapperTypeName) ? selectResult : CreateEntities(selectResult)); }