private IQueryHandler <T> listHandlerFor <T>(QueryModel model, IIncludeJoin[] joins, QueryStatistics stats) { if (model.HasOperator <ToJsonArrayResultOperator>()) { var query = new LinqQuery <T>(_store, model, joins, stats); return(new JsonQueryHandler(query.As <LinqQuery <string> >()).As <IQueryHandler <T> >()); } if (!typeof(T).IsGenericEnumerable()) { return(null); } var elementType = typeof(T).GetGenericArguments().First(); var handlerType = typeof(LinqQuery <>); if (typeof(T).GetGenericTypeDefinition() == typeof(IEnumerable <>)) { handlerType = typeof(EnumerableQueryHandler <>); } // TODO -- WTH? return (Activator.CreateInstance(handlerType.MakeGenericType(elementType), _store, model, joins, stats) .As <IQueryHandler <T> >()); }
void SelectQuery(object sender, LinkLabelLinkClickedEventArgs e) { LinqQuery query = (sender as LinkLabel).Tag as LinqQuery; tabControl.SelectedTab = tabPageQuery; richTextBoxScript.Text = query.Query; }
IEnumerable <T> IQueryExecutor.ExecuteCollection <T>(QueryModel queryModel) { Tenant.EnsureStorageExists(queryModel.SourceType()); var handler = new LinqQuery <T>(Store, queryModel, _includes.ToArray(), Statistics).ToList(); return(Connection.Fetch(handler, IdentityMap.ForQuery(), Statistics, Tenant)); }
public OneResultHandler(int rowLimit, LinqQuery <T> linqQuery, bool canBeNull = true, bool canBeMultiples = true) { _rowLimit = rowLimit; _linqQuery = linqQuery; _canBeNull = canBeNull; _canBeMultiples = canBeMultiples; }
public LinqQuery VisitQuery(ExpressionSyntax query, ExpressionSyntax source) { _query = new LinqQuery { Expression = query, SourceCollection = source }; _query = new LinqQuery { Expression = query, SourceCollection = source }; Visit(query); return(_query); }
public ILinqQueryable <T> AsQueryable <T>() { if (typeof(T) == typeof(object)) { return(new PlaceHolderQuery <T>(this).AsQueryable()); } var linqQuery = new LinqQuery <T>(this); return(linqQuery.AsQueryable()); }
private Task <TResult> executeAsync <TResult>(Func <LinqQuery <T>, IQueryHandler <TResult> > source, CancellationToken token) { var query = ToQueryModel(); Tenant.EnsureStorageExists(query.SourceType()); var linq = new LinqQuery <T>(Store, query, Includes.ToArray(), Statistics); var handler = source(linq); return(Executor.Connection.FetchAsync(handler, Executor.IdentityMap.ForQuery(), Statistics, Tenant, token)); }
private IQueryHandler <T> tryFindSingleQuery <T>(QueryModel model, IIncludeJoin[] joins, QueryStatistics stats) { var choice = model.FindOperators <ChoiceResultOperatorBase>().FirstOrDefault(); if (choice == null) { return(null); } var query = new LinqQuery <T>(_store, model, joins, stats); if (choice is FirstResultOperator) { return(choice.ReturnDefaultWhenEmpty ? OneResultHandler <T> .FirstOrDefault(query) : OneResultHandler <T> .First(query)); } if (choice is SingleResultOperator) { return(choice.ReturnDefaultWhenEmpty ? OneResultHandler <T> .SingleOrDefault(query) : OneResultHandler <T> .Single(query)); } if (choice is MinResultOperator) { return(AggregateQueryHandler <T> .Min(query)); } if (choice is MaxResultOperator) { return(AggregateQueryHandler <T> .Max(query)); } if (model.HasOperator <LastResultOperator>()) { throw new InvalidOperationException( "Marten does not support Last()/LastOrDefault(). Use reverse ordering and First()/FirstOrDefault() instead"); } return(null); }
private async Task <Document> Execute(Document document, LinqQuery query, string requestedMethodName, CancellationToken cancellationToken) { var editor = await DocumentEditor.CreateAsync(document, cancellationToken); var steps = query.Steps.Where(x => x.Name == "AsNoTracking" || x.Name == "AsTracking").ToList(); if (steps.Any()) { var s = steps.Last(); editor.ReplaceNode(s.Invocation.Expression, ((MemberAccessExpressionSyntax)s.Invocation.Expression).WithName(IdentifierName(requestedMethodName))); } else { editor.ReplaceNode(query.SourceCollection, InvocationExpression( MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, query.SourceCollection, IdentifierName(requestedMethodName)))); // context.Things.ToList() -> context.Things.AsNoTracking().ToList(); } return(editor.GetChangedDocument()); }
public ListQueryHandler(LinqQuery <T> query) { _query = query; }
public static IQueryHandler <T> FirstOrDefault(LinqQuery <T> query) { return(new OneResultHandler <T>(1, query, true, true)); }
public static IQueryHandler <T> SingleOrDefault(LinqQuery <T> query) { return(new OneResultHandler <T>(2, query, true, false)); }
/// <summary> /// 获得数据列表 /// </summary> public IList <DicEnumEntity> GetDicEnumList(int pageSize, int pageIndex, ref int recordCount, IList <ConditionUnit> wherelist) { string _keyword = ""; int _pid = -1; string _cachekey = SysCacheKey.DicEnumListKey; object _objcache = MemCache.GetCache(_cachekey); List <DicEnumEntity> _objlistall = null;//总数 if (_objcache != null) { _objlistall = (List <DicEnumEntity>)_objcache; } if (wherelist != null && wherelist.Count > 0) { foreach (ConditionUnit entity in wherelist) { switch (entity.FieldName) { case SearchFieldName.SeachDefault: { if (entity.CompareValue != null) { _keyword = StringUtils.GetDbString(entity.CompareValue); if (_objcache != null) { var templist = from c in _objlistall where c.Code.Contains(_keyword) || c.Name.Contains(_keyword) orderby c.Name select c; _objlistall = templist.ToList <DicEnumEntity>(); } } } break; case SearchFieldName.ParentId: { _pid = StringUtils.GetDbInt(entity.CompareValue); if (_objcache != null) { var templist = from c in _objlistall where c.ParentId == StringUtils.GetDbInt(entity.CompareValue) orderby c.Name select c; _objlistall = templist.ToList <DicEnumEntity>(); } } break; default: break; } } } // _cachekey = SysCacheKey.DicListKey + "_" + pageSize.ToString() + "_" + pageIndex.ToString() + "_" + keyword + "_" + pid; // obj = MemCache.GetCache(_cachekey); //if (obj != null) //{ // return (IList<DicEnumEntity>)obj; //} //else //{ IList <DicEnumEntity> list = null; if (pageIndex == 0) { pageIndex = 1; } if (_objcache != null && _objlistall != null && _objlistall.Count > 0) { list = LinqQuery.QueryByPage <DicEnumEntity>(pageSize, pageIndex, _objlistall); } else { list = DicEnumDA.Instance.GetDicEnumList(pageSize, pageIndex, ref recordCount, _keyword, _pid); } //MemCache.AddCache(_cachekey, list); return(list); //} }
public JsonQueryHandler(LinqQuery <string> query) { _query = query; }