private static IDb4oLinqQuery <TSource> Process <TSource>( IDb4oLinqQuery <TSource> query, Func <Db4oQuery <TSource>, IQueryBuilderRecord> queryProcessor, Func <IDb4oLinqQueryInternal <TSource>, IEnumerable <TSource> > fallbackProcessor) { if (query == null) { throw new ArgumentNullException("query"); } var candidate = query as Db4oQuery <TSource>; if (candidate == null) { return(new UnoptimizedQuery <TSource>(fallbackProcessor((IDb4oLinqQueryInternal <TSource>)EnsureDb4oQuery(query)))); } try { IQueryBuilderRecord record = queryProcessor(candidate); return(new Db4oQuery <TSource>(candidate, record)); } catch (QueryOptimizationException) { return(new UnoptimizedQuery <TSource>(fallbackProcessor(candidate))); } }
private IQueryBuilderRecord ApplyDirection(IQueryBuilderRecord record) { var recorder = new QueryBuilderRecorder(record); recorder.Add(ctx => ApplyDirection(ctx.CurrentQuery)); return(recorder.Record); }
public Db4oQuery(ISodaQueryFactory queryFactory) { if (queryFactory == null) { throw new ArgumentNullException("queryFactory"); } _queryFactory = queryFactory; _record = NullQueryBuilderRecord.Instance; }
public LinqQuery(IOdb odb) { if (odb == null) { throw new ArgumentNullException("odb"); } _odb = odb; _record = NullQueryBuilderRecord.Instance; }
private IQueryBuilderRecord ApplyDirection(IQueryBuilderRecord record) { QueryBuilderRecorder recorder = new QueryBuilderRecorder(record); recorder.Add(ctx => ApplyDirection(ctx.CurrentQuery)); return recorder.Record; }
public ChainedQueryBuilderRecord(IQueryBuilderRecord next, Action <QueryBuilderContext> action) { _next = next; _action = action; }
public CompositeQueryBuilderRecord(IQueryBuilderRecord first, IQueryBuilderRecord second) { _first = first; _second = second; }
public void Add(Action <QueryBuilderContext> action) { _last = new ChainedQueryBuilderRecord(_last, action); }
public QueryBuilderRecorder(IQueryBuilderRecord record) { _last = record; }
public ChainedQueryBuilderRecord(IQueryBuilderRecord next, Action<QueryBuilderContext> action) { _next = next; _action = action; }
public void Add(Action<QueryBuilderContext> action) { _last = new ChainedQueryBuilderRecord(_last, action); }
public LinqQuery(LinqQuery <T> parent, IQueryBuilderRecord record) { _odb = parent._odb; _record = new CompositeQueryBuilderRecord(parent._record, record); }
public Db4oQuery(Db4oQuery <T> parent, IQueryBuilderRecord record) { _queryFactory = parent.QueryFactory; _record = new CompositeQueryBuilderRecord(parent.Record, record); }