private DataCachingFacade.CachedTable GetCachedTable() { if (_cachedTable == null) { lock (this) { if (_cachedTable == null) { _cachedTable = new DataCachingFacade.CachedTable(GetOriginalQuery()); } } } return(_cachedTable); }
public CachingQueryable(DataCachingFacade.CachedTable cachedTable, Func <IQueryable> originalQueryGetter) { _cachedTable = cachedTable; _source = cachedTable.Queryable; _currentExpression = Expression.Constant(this); _getQueryFunc = originalQueryGetter; if (_source is IEnumerable <T> ) { _innerEnumerable = _source as IEnumerable <T>; if (_innerEnumerable is CachingEnumerable <T> ) { _wrappedEnumerable = _innerEnumerable as CachingEnumerable <T>; } } }