/// <summary> /// Recupera o origem de dados associada com a consulta. /// </summary> /// <param name="query"></param> /// <returns></returns> public Query.IQueryDataSource GetDataSource(Query.QueryInfo query) { Query.IQueryDataSource lastDataSource = null; if (query.StoredProcedureName != null || !query.CanUseCache || !Colosoft.Caching.CacheDataSource.IsCompatible(query)) { return(GetServerDataSource()); } foreach (var i in query.Entities) { var ds = GetDataSource(i); if (lastDataSource != null && lastDataSource != ds) { return(GetServerDataSource()); } lastDataSource = ds; } if (query.NestedQueries != null) { foreach (var nestedQuery in query.NestedQueries) { var ds = GetDataSource(nestedQuery); if ((lastDataSource != null && lastDataSource != ds) || !nestedQuery.CanUseCache) { return(GetServerDataSource()); } lastDataSource = ds; } } return(lastDataSource); }
/// <summary> /// Recupera a origem de dados comum entre as consulta informadas. /// </summary> /// <param name="queries"></param> /// <returns></returns> public Query.IQueryDataSource GetDataSource(Query.QueryInfo[] queries) { Query.IQueryDataSource lastDataSource = null; foreach (var i in queries) { var ds = GetDataSource(i); if (lastDataSource != null && lastDataSource != ds) { return(GetServerDataSource()); } lastDataSource = ds; } return(lastDataSource); }