internal QueryConverter(IDataServices services, TypeSystemProvider typeProvider, Translator translator, SqlFactory sql) { if (services == null) { throw Error.ArgumentNull("services"); } if (sql == null) { throw Error.ArgumentNull("sql"); } if (translator == null) { throw Error.ArgumentNull("translator"); } if (typeProvider == null) { throw Error.ArgumentNull("typeProvider"); } this.services = services; this.translator = translator; this.sql = sql; this.typeProvider = typeProvider; this.map = new Dictionary<ParameterExpression, SqlExpression>(); this.exprMap = new Dictionary<ParameterExpression, Expression>(); this.dupMap = new Dictionary<ParameterExpression, SqlNode>(); this.gmap = new Dictionary<SqlNode, GroupInfo>(); this.allowDeferred = true; }
internal SqlBinder(Translator translator, SqlFactory sqlFactory, MetaModel model, DataLoadOptions shape, SqlColumnizer columnizer, bool canUseOuterApply) { this.sql = sqlFactory; this.columnizer = columnizer; this.visitor = new Visitor(this, translator, this.columnizer, this.sql, model, shape, canUseOuterApply); }
internal Visitor(SqlBinder binder, Translator translator, SqlColumnizer columnizer, SqlFactory sqlFactory, MetaModel model, DataLoadOptions shape, bool canUseOuterApply) { this.binder = binder; this.translator = translator; this.columnizer = columnizer; this.sql = sqlFactory; this.typeProvider = sqlFactory.TypeProvider; this.expander = new SqlExpander(this.sql); this.aggregateChecker = new SqlAggregateChecker(); this.linkMap = new LinkOptimizationScope(null); this.outerAliasMap = new Dictionary<SqlAlias, SqlAlias>(); this.model = model; this.shape = shape; this.canUseOuterApply = canUseOuterApply; }