public ExecutorResult Execute() { return(RunDiagnosis.Watch(() => { if (!FromComponent.AliasNameMappers.Any()) { throw new ArgumentException("From"); } var mainTable = FromComponent.AliasNameMappers[0]; var selectStatement = _options.TemplateBase.CreateSelect(ExtractSelectFields(), mainTable.Key, mainTable.Value); var statementResultBuilder = Translate(selectStatement, WhereComponent, FromComponent, JoinComponents); JoinComponents.Clear(); if (PaginationComponent != null) { if (OrderComponent == null) { throw new Exception("Order"); } var(fields, tableName) = ExtractOrderFields(); var orderTemplate = _options.TemplateBase.CreateOrderBy(OrderComponent.OrderBy, $@"{tableName}.{fields}"); _options.TemplateBase.CreatePagination(PaginationComponent, orderTemplate, statementResultBuilder.StatmentTemplate); } else if (OrderComponent != null) { var(fields, tableName) = ExtractOrderFields(); var orderTemplate = _options.TemplateBase.CreateOrderBy(OrderComponent.OrderBy, $@"{tableName}.{fields}"); selectStatement.Append(orderTemplate); } return _resultExecutor.Execute(statementResultBuilder); })); }
public SelectComponent Include <TModel, TModel1>(Expression <Func <TModel, TModel1> > include) where TModel : EntityBase, new() where TModel1 : EntityBase, new() { Check.IfNullOrZero(include); var joinComponent = new JoinComponent(); joinComponent.AddInclude(include); JoinComponents.Add(joinComponent); return(this); }
public SelectComponent InnerJoin <TLeft, TRight>(Expression <Func <TLeft, TRight, Boolean> > join) where TLeft : EntityBase, new() where TRight : EntityBase, new() { Check.IfNullOrZero(join); var joinComponent = new JoinComponent(); joinComponent.AddJoin(join, JoinRelation.INNER); JoinComponents.Add(joinComponent); return(this); }