public IList <T> ExecuteEnhancedFilter <T>(IDb4oEnhancedFilter filter) { var query = _container.Query(); query.Constrain(typeof(T)); filter.OptimizeQuery(query); OnQueryExecution(filter, QueryExecutionKind.PreOptimized); return(WrapQueryResult <T>(query)); }
private Db4objects.Db4o.Query.IQuery ConfigureQuery(Db4objects.Db4o.Query.IQuery query, Db4objects.Db4o.Query.Predicate predicate) { IDb4oEnhancedFilter filter = predicate as IDb4oEnhancedFilter; if (null != filter) { filter.OptimizeQuery(query); OnQueryExecution(predicate, QueryExecutionKind.PreOptimized); return(query); } query.Constrain(predicate.ExtentType()); try { if (OptimizeNativeQueries()) { OptimizeQuery(query, predicate, predicate.GetFilterMethod()); OnQueryExecution(predicate, QueryExecutionKind.DynamicallyOptimized); return(query); } } catch (System.Exception e) { OnQueryOptimizationFailure(e); if (OptimizeNativeQueries()) { DiagnosticProcessor dp = Container()._handlers.DiagnosticProcessor(); if (dp.Enabled()) { dp.NativeQueryUnoptimized(predicate, e); } } } query.Constrain(new Db4objects.Db4o.Internal.Query.PredicateEvaluation(predicate)); OnQueryExecution(predicate, QueryExecutionKind.Unoptimized); return(query); }