/// <summary> /// Initializes a new instance of the <see cref="QueryConverter"/> class. /// </summary> /// <param name="services">The services.</param> /// <param name="typeProvider">The type provider.</param> /// <param name="translator">The translator.</param> /// <param name="nodeFactory">The node factory.</param> internal QueryConverter(IDataServices services, TypeSystemProvider typeProvider, Translator translator, NodeFactory nodeFactory) { if(services == null) { throw Error.ArgumentNull("services"); } if(nodeFactory == null) { throw Error.ArgumentNull("sql"); } if(translator == null) { throw Error.ArgumentNull("translator"); } if(typeProvider == null) { throw Error.ArgumentNull("typeProvider"); } _services = services; _translator = translator; _nodeFactory = nodeFactory; _typeProvider = typeProvider; _parameterExpressionToSqlExpression = new Dictionary<ParameterExpression, SqlExpression>(); _parameterExpressionToExpression = new Dictionary<ParameterExpression, Expression>(); _parameterExpressionToSqlNode = new Dictionary<ParameterExpression, SqlNode>(); _sqlNodeToGroupInfo = new Dictionary<SqlNode, GroupInfo>(); _allowDeferred = true; }
internal MemberAccessBinder(SqlBinder binder, Translator translator, SqlColumnizer columnizer, NodeFactory 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; }
// Not implementing finalizer here because there are no unmanaged resources // to release. See http://msdnwiki.microsoft.com/en-us/mtpswiki/12afb1ea-3a17-4a3f-a1f0-fcdb853e2359.aspx // The bulk of the clean-up code is implemented in Dispose(bool) protected virtual void Dispose(bool disposing) { // Implemented but empty so that derived contexts can implement // a finalizer that potentially cleans up unmanaged resources. if(disposing) { _services = null; if(_conManager != null) { _conManager.DisposeConnection(); } _conManager = null; _typeProvider = null; _sqlFactory = null; _translator = null; _readerCompiler = null; _log = null; } }
private void InitializeProviderMode() { if(_typeProvider == null) { switch(_mode) { case SqlServerProviderMode.Sql2000: _typeProvider = SqlTypeSystem.Create2000Provider(); break; case SqlServerProviderMode.Sql2005: _typeProvider = SqlTypeSystem.Create2005Provider(); break; case SqlServerProviderMode.Sql2008: _typeProvider = SqlTypeSystem.Create2008Provider(); break; case SqlServerProviderMode.SqlCE: _typeProvider = SqlTypeSystem.CreateCEProvider(); break; default: System.Diagnostics.Debug.Assert(false); break; } } if(_sqlFactory == null) { _sqlFactory = new SqlFactory(_typeProvider, _services.Model); _translator = new Translator(_services, _sqlFactory, _typeProvider); } }
internal SqlBinder(Translator translator, NodeFactory sqlFactory, MetaModel model, DataLoadOptions shape, SqlColumnizer columnizer, bool canUseOuterApply) { this.sql = sqlFactory; this.columnizer = columnizer; this.visitor = new MemberAccessBinder(this, translator, this.columnizer, this.sql, model, shape, canUseOuterApply); }