Exemplo n.º 1
0
 /// <summary>
 /// 初始化一个<see cref="JoinClause"/>类型的实例
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="dialect">Sql方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 /// <param name="tableDatabase">表数据库</param>
 /// <param name="joinItems">连接参数列表</param>
 public JoinClause(ISqlBuilder sqlBuilder
                   , IDialect dialect
                   , IEntityResolver resolver
                   , IEntityAliasRegister register
                   , IParameterManager parameterManager
                   , ITableDatabase tableDatabase
                   , List <JoinItem> joinItems = null)
 {
     _sqlBuilder       = sqlBuilder;
     _dialect          = dialect;
     _resolver         = resolver;
     _register         = register;
     _parameterManager = parameterManager;
     TableDatabase     = tableDatabase;
     _helper           = new Helper(dialect, resolver, register, parameterManager);
     _params           = joinItems ?? new List <JoinItem>();
 }
Exemplo n.º 2
0
        /// <summary>
        /// 过滤
        /// </summary>
        private void Filter(IDialect dialect, IEntityMatedata matedata, IEntityAliasRegister register, IParameterManager parameterManager, IJoinClause join, IWhereClause where, Type type, string alias)
        {
            if (type == null)
            {
                return;
            }
            if (string.IsNullOrWhiteSpace(alias))
            {
                return;
            }
            if (typeof(IDelete).IsAssignableFrom(type) == false)
            {
                return;
            }
            var isDeleted = $"{dialect.SafeName( alias )}.{dialect.SafeName( matedata.GetColumn( type, "IsDeleted" ) )}";

            if (register.FromType == type)
            {
                where.Where(isDeleted, false);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// 初始化From子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="tableDatabase">表数据库</param>
 /// <param name="table">表</param>
 public OracleFromClause(ISqlBuilder builder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, ITableDatabase tableDatabase, SqlItem table = null)
     : base(builder, dialect, resolver, register, tableDatabase, table)
 {
 }
Exemplo n.º 4
0
 /// <summary>
 /// 初始化MySql 表连接子句
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 /// <param name="tableDatabase">表数据库</param>
 public MySqlJoinClause(ISqlBuilder sqlBuilder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register,
                        IParameterManager parameterManager, ITableDatabase tableDatabase)
     : base(sqlBuilder, dialect, resolver, register, parameterManager, tableDatabase)
 {
 }
Exemplo n.º 5
0
 /// <summary>
 /// 初始化From子句
 /// </summary>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 public FromClause(IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register)
 {
     _dialect  = dialect;
     _resolver = resolver;
     _register = register;
 }
Exemplo n.º 6
0
 /// <summary>
 /// 复制From子句
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 public override IFromClause Clone(IEntityAliasRegister register)
 {
     return(new MySqlFromClause(Builder, Dialect, Resolver, register, Table));
 }
Exemplo n.º 7
0
 /// <summary>
 /// 复制Where子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 public virtual IWhereClause Clone(ISqlBuilder builder, IEntityAliasRegister register, IParameterManager parameterManager)
 {
     return(new WhereClause(builder, _dialect, _resolver, register, parameterManager, new SqlCondition(_condition?.GetCondition())));
 }
Exemplo n.º 8
0
        /// <summary>
        /// 复制Join子句
        /// </summary>
        /// <param name="sqlBuilder">Sql生成器</param>
        /// <param name="register">实体别名注册器</param>
        /// <param name="parameterManager">参数管理器</param>
        public virtual IJoinClause Clone(ISqlBuilder sqlBuilder, IEntityAliasRegister register, IParameterManager parameterManager)
        {
            var helper = new Helper(_dialect, _resolver, register, parameterManager);

            return(new JoinClause(sqlBuilder, _dialect, _resolver, register, parameterManager, TableDatabase, _params.Select(t => t.Clone(helper)).ToList()));
        }
Exemplo n.º 9
0
 /// <summary>
 /// 复制From子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="register">实体别名注册器</param>
 public virtual IFromClause Clone(ISqlBuilder builder, IEntityAliasRegister register)
 {
     return(new FromClause(builder, Dialect, Resolver, register, Table));
 }
Exemplo n.º 10
0
 /// <summary>
 /// 初始化一个<see cref="MySqlFromClause"/>类型的实例
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 public MySqlFromClause(ISqlBuilder builder, IDialect dialect, IEntityResolver resolver,
                        IEntityAliasRegister register) : base(
         builder, dialect, resolver, register)
 {
 }
Exemplo n.º 11
0
 /// <summary>
 /// 初始化谓词表达式解析器
 /// </summary>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 public PredicateExpressionResolver(IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, IParameterManager parameterManager)
 {
     _helper = new Helper(dialect, resolver, register, parameterManager);
 }
Exemplo n.º 12
0
 /// <summary>
 /// 初始化一个<see cref="MySqlJoinClause"/>类型的实例
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 public MySqlJoinClause(ISqlBuilder sqlBuilder, IDialect dialect, IEntityResolver resolver,
                        IEntityAliasRegister register) : base(sqlBuilder, dialect, resolver, register)
 {
 }
Exemplo n.º 13
0
 /// <summary>
 /// 初始化From子句
 /// </summary>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 public MySqlFromClause(IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register)
     : base(dialect, resolver, register)
 {
 }
Exemplo n.º 14
0
 /// <summary>
 /// 克隆
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 /// <returns></returns>
 public virtual IWhereClause Clone(IEntityAliasRegister register, IParameterManager parameterManager)
 {
     return(new WhereClause(this, register, parameterManager));
 }
Exemplo n.º 15
0
 /// <summary>
 /// 克隆
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 /// <returns></returns>
 public virtual IGroupByClause Clone(IEntityAliasRegister register)
 {
     return(new GroupByClause(this, register));
 }
Exemplo n.º 16
0
 /// <summary>
 /// 初始化Sql执行上下文
 /// </summary>
 /// <param name="entityAliasRegister">实体别名注册器</param>
 /// <param name="whereClause">实体别名注册器</param>
 /// <param name="matedata">实体元数据解析器</param>
 public SqlContext(IEntityAliasRegister entityAliasRegister, IWhereClause whereClause, IEntityMatedata matedata)
 {
     EntityAliasRegister = entityAliasRegister ?? new EntityAliasRegister();
     Where    = whereClause ?? throw new ArgumentNullException(nameof(whereClause));
     Matedata = matedata;
 }
Exemplo n.º 17
0
 /// <summary>
 /// 初始化From子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="table">表</param>
 public FromClause(ISqlBuilder builder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, SqlItem table = null)
 {
     Builder  = builder;
     Dialect  = dialect;
     Resolver = resolver;
     Register = register;
     Table    = table;
 }
Exemplo n.º 18
0
 /// <summary>
 /// 获取表别名
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 private string GetTableAlias(IEntityAliasRegister register) => register != null && register.Contains(TableType) ? register.GetAlias(TableType) : TableAlias;
Exemplo n.º 19
0
 /// <summary>
 /// 复制Group By子句
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 public virtual IGroupByClause Clone(IEntityAliasRegister register)
 {
     return(new GroupByClause(_dialect, _resolver, register, new List <SqlItem>(_group), _having));
 }
Exemplo n.º 20
0
 /// <summary>
 /// 复制Select子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="register">实体别名注册器</param>
 public virtual ISelectClause Clone(ISqlBuilder builder, IEntityAliasRegister register)
 {
     return(new SelectClause(builder, _dialect, _resolver, register, _columns.Clone()));
 }
Exemplo n.º 21
0
 /// <summary>
 /// 初始化Where子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 /// <param name="condition">查询条件</param>
 public WhereClause(ISqlBuilder builder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, IParameterManager parameterManager, ICondition condition = null)
 {
     Builder             = builder;
     _dialect            = dialect;
     _resolver           = resolver;
     _condition          = condition;
     _helper             = new Helper(dialect, resolver, register, parameterManager);
     _expressionResolver = new PredicateExpressionResolver(dialect, resolver, register, parameterManager);
 }
Exemplo n.º 22
0
 /// <summary>
 /// 初始化表连接子句
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体注册器</param>
 /// <param name="joinItems">连接参数列表</param>
 public JoinClause(ISqlBuilder sqlBuilder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, List <JoinItem> joinItems = null)
 {
     _sqlBuilder = sqlBuilder;
     _dialect    = dialect;
     _resolver   = resolver;
     _register   = register;
     _params     = joinItems ?? new List <JoinItem>();
 }
Exemplo n.º 23
0
 /// <summary>
 /// 初始化From子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="table">表</param>
 public MySqlFromClause(ISqlBuilder builder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, SqlItem table = null)
     : base(builder, dialect, resolver, register, table)
 {
 }
Exemplo n.º 24
0
 /// <summary>
 /// 复制Join子句
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="register">实体别名注册器</param>
 public virtual IJoinClause Clone(ISqlBuilder sqlBuilder, IEntityAliasRegister register)
 {
     return(new JoinClause(sqlBuilder, _dialect, _resolver, register, _params.Select(t => t.Clone()).ToList()));
 }
Exemplo n.º 25
0
 /// <summary>
 /// 初始化Where子句
 /// </summary>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="parameterManager">参数管理器</param>
 public WhereClause(IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, IParameterManager parameterManager)
 {
     _resolver           = resolver;
     _helper             = new Helper(dialect, resolver, register, parameterManager);
     _expressionResolver = new PredicateExpressionResolver(dialect, resolver, register, parameterManager);
 }
Exemplo n.º 26
0
 /// <summary>
 /// 克隆
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="register">实体别名注册器</param>
 /// <returns></returns>
 public virtual ISelectClause Clone(ISqlBuilder sqlBuilder, IEntityAliasRegister register)
 {
     return(new SelectClause(this, sqlBuilder, register));
 }
Exemplo n.º 27
0
 /// <summary>
 /// 复制Order By子句
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 public virtual IOrderByClause Clone(IEntityAliasRegister register)
 {
     return(new OrderByClause(_dialect, _resolver, register, new List <OrderByItem>(_items)));
 }
Exemplo n.º 28
0
 /// <summary>
 /// 初始化Select子句
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体注册器</param>
 /// <param name="columns">列名集合</param>
 public SelectClause(ISqlBuilder sqlBuilder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, List <ColumnCollection> columns = null)
 {
     _sqlBuilder = sqlBuilder;
     _dialect    = dialect;
     _resolver   = resolver;
     _register   = register;
     _columns    = columns ?? new List <ColumnCollection>();
 }
Exemplo n.º 29
0
 /// <summary>
 /// 克隆
 /// </summary>
 /// <param name="register">实体别名注册器</param>
 /// <returns></returns>
 public virtual IOrderByClause Clone(IEntityAliasRegister register)
 {
     return(new OrderByClause(this, register));
 }
Exemplo n.º 30
0
 /// <summary>
 /// 复制Select子句
 /// </summary>
 /// <param name="sqlBuilder">Sql生成器</param>
 /// <param name="register">实体别名注册器</param>
 public virtual ISelectClause Clone(ISqlBuilder sqlBuilder, IEntityAliasRegister register)
 {
     return(new SelectClause(sqlBuilder, _dialect, _resolver, register, new List <ColumnCollection>(_columns)));
 }