Ejemplo n.º 1
0
 /// <summary>
 /// 实例化 <see cref="NpgMethodCallExressionVisitor"/> 类的新实例
 /// </summary>
 public NpgMethodCallExressionVisitor(IDbQueryProvider provider, ExpressionVisitorBase visitor)
     : base(provider, visitor)
 {
     _provider    = provider;
     _visitor     = visitor;
     _builder     = visitor.SqlBuilder;
     _visitedMark = _visitor.VisitedMark;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 初始化 <see cref="OrderByExpressionVisitor"/> 类的新实例
 /// </summary>
 public OrderByExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, List <DbExpression> qOrder, DbExpression groupBy = null, string alias = null)
     : base(provider, aliases, null, false)
 {
     _qOrder   = qOrder;
     _aliases  = aliases;
     _groupBy  = groupBy;
     _alias    = alias;
     _provider = provider;
 }
 /// <summary>
 /// 实例化 <see cref="SqlServerMethodCallExressionVisitor"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="visitor">表达式访问器</param>
 public MySqlMethodCallExressionVisitor(IDbQueryProvider provider, ExpressionVisitorBase visitor)
     : base(provider, visitor)
 {
     _provider    = provider;
     _visitor     = visitor;
     _builder     = visitor.SqlBuilder;
     _visitedMark = _visitor.VisitedStack;
     _dbValue     = _provider.DbValue;
 }
 /// <summary>
 /// 初始化 <see cref="OrderByExpressionVisitor"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="aliases">表别名集合</param>
 /// <param name="orderBy">ORDER BY 子句</param>
 /// <param name="groupBy">GROUP BY 子句</param>
 /// <param name="alias">指定的表别名</param>
 public OrderByExpressionVisitor(IDbQueryProvider provider, TableAlias aliases, List <DbExpression> orderBy, DbExpression groupBy = null, string alias = null)
     : base(provider, aliases, null)
 {
     _orderBy  = orderBy;
     _aliases  = aliases;
     _groupBy  = groupBy;
     _alias    = alias;
     _provider = provider;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 初始化 <see cref="StatisExpressionVisitor"/> 类的新实例
 /// </summary>
 public StatisExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, DbExpression statis, DbExpression groupBy = null, string alias = null)
     : base(provider, aliases, statis.Expressions != null ? statis.Expressions[0] : null, false)
 {
     _provider = provider;
     _aliases  = aliases;
     _statis   = statis;
     _groupBy  = groupBy;
     _alias    = alias;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 实例化 <see cref="SqlBuilderBase"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="token">解析上下文参数</param>
 public SqlBuilderBase(IDbQueryProvider provider, ParserToken token)
 {
     _provider     = provider;
     _token        = token;
     _innerBuilder = new StringBuilder(128);
     _escCharLeft  = _provider.QuotePrefix;
     _escCharRight = _provider.QuoteSuffix;
     _escCharQuote = _provider.SingleQuoteChar;
 }
Ejemplo n.º 7
0
 public SqlBuilderBase(IDbQueryProvider provider, List <IDbDataParameter> parameters = null)
 {
     _provider     = provider;
     _parameters   = parameters;
     _innerBuilder = new StringBuilder(128);
     _escCharLeft  = _provider.QuotePrefix;
     _escCharRight = _provider.QuoteSuffix;
     _escCharQuote = _provider.SingleQuoteChar;
 }
 /// <summary>
 /// 初始化 <see cref="AggregateExpressionVisitor"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="aliases">表别名集合</param>
 /// <param name="aggregate">聚合函数表达式</param>
 /// <param name="groupBy">Group by 子句</param>
 /// <param name="alias">指定的别名</param>
 public AggregateExpressionVisitor(IDbQueryProvider provider, TableAlias aliases, DbExpression aggregate, DbExpression groupBy = null, string alias = null)
     : base(provider, aliases, aggregate.Expressions != null ? aggregate.Expressions[0] : null)
 {
     _provider  = provider;
     _aliases   = aliases;
     _aggregate = aggregate;
     _groupBy   = groupBy;
     _alias     = alias;
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 实例化 <see cref="MappingCommand"/> 类的新实例
        /// </summary>
        /// <param name="provider">数据查询提供者</param>
        /// <param name="aliases">别名</param>
        /// <param name="token">解析上下文参数</param>
        public MappingCommand(IDbQueryProvider provider, TableAliasCache aliases, ResolveToken token)
            : base(string.Empty, token != null ? token.Parameters : null, System.Data.CommandType.Text)
        {
            _provider   = provider;
            _aliases    = aliases;
            _navMembers = new Dictionary <string, MemberExpression>();

            _joinFragment  = provider.CreateSqlBuilder(token);
            _whereFragment = provider.CreateSqlBuilder(token);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 实例化 <see cref="DbCommandDefinition_Select"/> 类的新实例
        /// </summary>
        /// <param name="provider">数据查询提供者</param>
        /// <param name="aliases">别名</param>
        /// <param name="parameters">已存在的参数列表</param>
        public DbCommandDefinition_Select(IDbQueryProvider provider, TableAliasCache aliases, List <IDbDataParameter> parameters)
            : base(string.Empty, null, System.Data.CommandType.Text)
        {
            _provider   = provider;
            _aliases    = aliases;
            _navMembers = new Dictionary <string, MemberExpression>();

            _joinFragment  = provider.CreateSqlBuilder(parameters);
            _whereFragment = provider.CreateSqlBuilder(parameters);
        }
Ejemplo n.º 11
0
 /// <summary>
 /// 实例化 <see cref="SqlBuilder"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="token">解析上下文参数</param>
 public SqlBuilder(IDbQueryProvider provider, ResolveToken token)
 {
     _provider     = provider;
     _dbValue      = provider.DbValue;
     _token        = token;
     _innerBuilder = new StringBuilder(128);
     _escCharLeft  = _provider.QuotePrefix;
     _escCharRight = _provider.QuoteSuffix;
     _escCharQuote = _provider.SingleQuoteChar;
 }
Ejemplo n.º 12
0
        /// <summary>
        /// 实例化 <see cref="SelectCommand"/> 类的新实例
        /// </summary>
        /// <param name="provider">数据查询提供者</param>
        /// <param name="aliases">别名</param>
        /// <param name="token">解析上下文参数</param>
        public SelectCommand(IDbQueryProvider provider, TableAliasCache aliases, ParserToken token)
            : base(string.Empty, null, System.Data.CommandType.Text)
        {
            _provider   = provider;
            _aliases    = aliases;
            _navMembers = new Dictionary <string, MemberExpression>();

            _joinFragment  = provider.CreateSqlBuilder(token);
            _whereFragment = provider.CreateSqlBuilder(token);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 初始化 <see cref="JoinExpressionVisitor"/> 类的新实例
        /// </summary>
        public NpgJoinExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, List <DbExpression> qJoin, NpgCommandType operationType)
            : base(provider, aliases, null, false)
        {
            _qJoin         = qJoin;
            _aliases       = aliases;
            _operationType = operationType;

            if (_operationType == NpgCommandType.DELETE)
            {
                _keywordName = "USING";
            }
            else if (_operationType == NpgCommandType.UPDATE)
            {
                _keywordName = "FROM";
            }
        }
        /// <summary>
        /// 初始化 <see cref="ColumnExpressionVisitor"/> 类的新实例
        /// </summary>
        public ColumnExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, IDbQueryableInfo_Select qQuery)
            : base(provider, aliases, qQuery.Select.Expressions != null ? qQuery.Select.Expressions[0] : null)
        {
            _provider = provider;
            _aliases  = aliases;
            _qQuery   = qQuery;
            _groupBy  = qQuery.GroupBy;
            _include  = qQuery.Includes;

            if (_pickColumns == null)
            {
                _pickColumns = new ColumnCollection();
            }
            _navigations    = new NavigationCollection();
            _navChainHopper = new List <string>(10);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 初始化 <see cref="ColumnExpressionVisitor"/> 类的新实例
        /// </summary>
        /// <param name="provider">查询语义提供者</param>
        /// <param name="aliases">表别名集合</param>
        /// <param name="dbQuery">查询语义</param>
        public ColumnExpressionVisitor(IDbQueryProvider provider, TableAlias aliases, IDbQueryableInfo_Select dbQuery)
            : base(provider, aliases, dbQuery.Select.Expressions != null ? dbQuery.Select.Expressions[0] : null)
        {
            _provider = provider;
            _aliases  = aliases;
            _dbQuery  = dbQuery;
            _groupBy  = dbQuery.GroupBy;
            _include  = dbQuery.Includes;

            if (_pickColumns == null)
            {
                _pickColumns = new DbColumnCollection();
            }
            _navDescriptors    = new NavDescriptorCollection();
            _navDescriptorKeys = new List <string>(10);
        }
        /// <summary>
        /// 实例化 <see cref="Builder" /> 的新实例
        /// </summary>
        public NpgDeleteDbCommandDefinition(IDbQueryProvider provider, TableAliasCache aliases, NpgCommandType operationType, List <IDbDataParameter> parameters)
            : base(provider, aliases, parameters)
        {
            _provider      = provider;
            _aliases       = aliases;
            _onPhrase      = _provider.CreateSqlBuilder(parameters);
            _operationType = operationType;

            if (_operationType == NpgCommandType.DELETE)
            {
                _keywordName = "USING";
            }
            else if (_operationType == NpgCommandType.UPDATE)
            {
                _keywordName = "FROM";
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 实例化 <see cref="Builder" /> 的新实例
        /// </summary>
        /// <param name="token">参数列表,NULL 或者 Parameters=NULL 时表示不使用参数化</param>
        public NpgSelectInfoCommand(IDbQueryProvider provider, TableAliasCache aliases, NpgCommandType operationType, ParserToken token)
            : base(provider, aliases, token)
        {
            _provider      = provider;
            _aliases       = aliases;
            _onPhrase      = _provider.CreateSqlBuilder(token);
            _operationType = operationType;

            if (_operationType == NpgCommandType.DELETE)
            {
                _keywordName = "USING";
            }
            else if (_operationType == NpgCommandType.UPDATE)
            {
                _keywordName = "FROM";
            }
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 初始化 <see cref="NpgJoinExpressionVisitor"/> 类的新实例
        /// </summary>
        public NpgJoinExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, List <DbExpression> qJoin, DbExpressionType dbExpressionType)
            : base(provider, aliases, qJoin)
        {
            _qJoin            = qJoin;
            _aliases          = aliases;
            _provider         = provider;
            _dbExpressionType = dbExpressionType;

            if (_dbExpressionType == DbExpressionType.Delete)
            {
                _keywordName = "USING ";
            }
            else if (_dbExpressionType == DbExpressionType.Update)
            {
                _keywordName = "FROM ";
            }
            _pad = "".PadLeft(_keywordName.Length, ' ');
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 实例化 <see cref="NpgMappingDbCommand" /> 的新实例
        /// </summary>
        /// <param name="provider">数据查询提供者</param>
        /// <param name="aliases">别名</param>
        /// <param name="dbExpressionType">表达式类型</param>
        /// <param name="token">解析上下文参数</param>
        public NpgMappingDbCommand(IDbQueryProvider provider, TableAlias aliases, DbExpressionType dbExpressionType, ResolveToken token)
            : base(provider, aliases, token)
        {
            _provider         = provider;
            _aliases          = aliases;
            _onPhrase         = _provider.CreateSqlBuilder(token);
            _dbExpressionType = dbExpressionType;

            if (_dbExpressionType == DbExpressionType.Delete)
            {
                _keywordName = "USING ";
            }
            else if (_dbExpressionType == DbExpressionType.Update)
            {
                _keywordName = "FROM ";
            }
            _pad = "".PadLeft(_keywordName.Length, ' ');
        }
Ejemplo n.º 20
0
 /// <summary>
 /// 初始化 <see cref="WhereExpressionVisitor"/> 类的新实例
 /// </summary>
 public WhereExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, DbExpression dbExpression)
     : base(provider, aliases, dbExpression != null && dbExpression.Expressions != null ? dbExpression.Expressions[0] : null)
 {
     _expression = base.Expression;
 }
Ejemplo n.º 21
0
 /// <summary>
 /// 初始化 <see cref="NavPredicateExpressionVisitor"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="aliases">表别名集合</param>
 /// <param name="predicate">要访问的表达式</param>
 /// <param name="alias">指定的表别名</param>
 public NavPredicateExpressionVisitor(IDbQueryProvider provider, TableAlias aliases, Expression predicate, string alias)
     : base(provider, aliases, predicate)
 {
     _expression = base.Expression;
     _alias      = alias;
 }
Ejemplo n.º 22
0
 public DbRepository(IDbConnection connection, IDbQueryProvider queryProvider)
 {
     _connection    = connection ?? throw new ArgumentNullException(nameof(connection));
     _queryProvider = queryProvider ?? throw new ArgumentNullException(nameof(queryProvider));
 }
Ejemplo n.º 23
0
 /// <summary>
 /// 初始化 <see cref="GroupByExpressionVisitor"/> 类的新实例
 /// </summary>
 public GroupByExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, DbExpression groupBy)
     : base(provider, aliases, groupBy != null ? groupBy.Expressions[0] : null, false)
 {
 }
Ejemplo n.º 24
0
 /// <summary>
 /// 初始化 <see cref="DbContextBase"/> 类的新实例
 /// <param name="connString">数据库连接字符串</param>
 /// <param name="commandTimeout">执行命令超时时间</param>
 /// </summary>
 public DbContextBase(string connString, int?commandTimeout)
 {
     _database = (Database)this.CreateDatabase(connString, commandTimeout);
     _provider = this.CreateQueryProvider();
     _provider.DbProviderFactory = _database.DbProviderFactory;
 }
 /// <summary>
 /// 初始化 <see cref="OracleUpdateExpressionVisitor"/> 类的新实例
 /// </summary>
 /// <param name="provider">查询语义提供者</param>
 /// <param name="aliases">表别名集合</param>
 /// <param name="expression">要访问的表达式</param>
 public OracleUpdateExpressionVisitor(IDbQueryProvider provider, TableAlias aliases, Expression expression)
     : base(provider, aliases, expression)
 {
     _provider = provider;
     _aliases  = aliases;
 }
Ejemplo n.º 26
0
 /// <summary>
 /// 初始化 <see cref="NpgUpdateExpressionVisitor"/> 类的新实例
 /// </summary>
 public NpgUpdateExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, Expression exp)
     : base(provider, aliases, exp)
 {
     _provider = provider;
     _aliases  = aliases;
 }
Ejemplo n.º 27
0
        // MySQL 8.0以上版本没有 nvarchar,nchar 的类型
        // https://dev.mysql.com/doc/refman/8.0/en/charset-national.html

        //timestamp:
        //yyyymmddhhmmss格式表示的时间戳值,TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。
        //也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。TIMESTAMP值返回后显示为’YYYY-MM-DD HH:MM:SS’格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。

        /// <summary>
        /// 实例化 <see cref="MySqlBuilder"/> 类的新实例
        /// </summary>
        /// <param name="provider">提供者</param>
        /// <param name="parameters">参数化</param>
        public MySqlBuilder(IDbQueryProvider provider, List <IDbDataParameter> parameters = null)
            : base(provider, parameters)
        {
        }
Ejemplo n.º 28
0
 /// <summary>
 /// 实例化 <see cref="SqlMethodCallExressionVisitor"/> 类的新实例
 /// </summary>
 public SqlMethodCallExressionVisitor(IDbQueryProvider provider, ExpressionVisitorBase visitor)
     : base(provider, visitor)
 {
 }
Ejemplo n.º 29
0
        // MySQL 8.0以上版本没有 nvarchar,nchar 的类型
        // https://dev.mysql.com/doc/refman/8.0/en/charset-national.html

        //timestamp:
        //yyyymmddhhmmss格式表示的时间戳值,TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。
        //也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。TIMESTAMP值返回后显示为’YYYY-MM-DD HH:MM:SS’格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。

        /// <summary>
        /// 实例化 <see cref="MySqlBuilder"/> 类的新实例
        /// </summary>
        /// <param name="provider">提供者</param>
        /// <param name="token">参数列表,NULL 或者 Parameters=NULL 时表示不使用参数化</param>
        public MySqlBuilder(IDbQueryProvider provider, ParserToken token)
            : base(provider, token)
        {
        }
 /// <summary>
 /// 初始化 <see cref="NpgWhereExpressionVisitor"/> 类的新实例
 /// </summary>
 public NpgWhereExpressionVisitor(IDbQueryProvider provider, TableAliasCache aliases, DbExpression exp)
     : base(provider, aliases, exp)
 {
     _expression = exp != null && exp.Expressions != null ? exp.Expressions[0] : null;
 }