示例#1
0
 /// <summary>
 /// 创建Lambda表达式解析对象
 /// </summary>
 /// <param name="parameterFactory">sql参数创建对象</param>
 /// <param name="commandTreeFactory">创建Sql命令生成树的工厂</param>
 /// <param name="mapperContainer">Mapper对象容器</param>
 public WhereVisitor(IParameterFactory parameterFactory, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer)
 {
     //非空检查
     Check.ArgumentNull(parameterFactory, nameof(parameterFactory));
     Check.ArgumentNull(commandTreeFactory, nameof(commandTreeFactory));
     //赋值
     _parameterFactory   = parameterFactory;
     _commandTreeFactory = commandTreeFactory;
     _mapperContainer    = mapperContainer;
 }
 /// <summary>
 /// 创建获取表达式解析器的工厂
 /// </summary>
 /// <param name="parameterFactory">参数创建器</param>
 /// <param name="commandTreeFactory">创建Sql命令生成树的工厂</param>
 /// <param name="mapperContainer">Mapper容器</param>
 public WhereVisitorFactory(IParameterFactory parameterFactory, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer = null)
 {
     //非空检查
     Check.ArgumentNull(parameterFactory, nameof(parameterFactory));
     Check.ArgumentNull(commandTreeFactory, nameof(commandTreeFactory));
     //赋值
     _parameterFactory   = parameterFactory;
     _commandTreeFactory = commandTreeFactory;
     _mapperContainer    = mapperContainer;
     _locaker            = new object();
     _whereVisitors      = new Dictionary <ExpressionType, WhereVisitor>();
 }
        /// <summary>
        /// 创建表
        /// </summary>
        /// <param name="dbHelper">操作数据库的Helper</param>
        /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
        /// <param name="tableMapper">Table元数据解析器</param>
        public int CreateTable(DbHelper dbHelper, ICommandTreeFactory commandTreeFactory, ITableMapper tableMapper)
        {
            //获取TableHeader
            ITableHeader tableHeader = tableMapper.Header;
            //获取ColumnNodes
            IEnumerable <IColumnNode> columnNodes = tableMapper.GetColumnMappers().Select(m => m.ToColumnNode());
            //获取建表语句生成树
            ICommandTree buildTableTree = commandTreeFactory.GetBuildTableTree(tableHeader.SchemaName, tableHeader.TableName, columnNodes);

            //创建建表语句并执行
            return(dbHelper.ExecuteUpdate(buildTableTree.Compile()));
        }
示例#4
0
 /// <summary>
 /// 创建视图查询数据源
 /// </summary>
 /// <param name="dbFactory">查询数据源创建工厂</param>
 /// <param name="dbHelper">操作数据库的对象</param>
 /// <param name="commandTreeFactory">命令生成树工厂</param>
 /// <param name="innerQuerySql">查询sql</param>
 public DbView(IDbFactory dbFactory, DbHelper dbHelper, ICommandTreeFactory commandTreeFactory, string innerQuerySql)
 {
     //非空检查
     Check.ArgumentNull(dbFactory, nameof(dbFactory));
     Check.ArgumentNull(dbHelper, nameof(dbHelper));
     Check.ArgumentNull(commandTreeFactory, nameof(commandTreeFactory));
     Check.ArgumentNull(innerQuerySql, nameof(innerQuerySql));
     //赋值
     this.modelAccessor      = ObjectAccessor.GetAccessor(typeof(TModel));
     this.Factory            = dbFactory;
     this.dbHelper           = dbHelper;
     this.commandTreeFactory = commandTreeFactory;
     this.InnerQuerySql      = innerQuerySql;
 }
示例#5
0
 /// <summary>
 /// 创建实体数据操作对象
 /// </summary>
 /// <param name="factory">查询数据源创建工厂</param>
 /// <param name="dbHelper">数据库操作对象</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="mapperContainer">mapper容器</param>
 public DbOperator(IDbFactory factory, DbHelper dbHelper, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer)
 {
     //非空检查
     Check.ArgumentNull(factory, nameof(factory));
     Check.ArgumentNull(dbHelper, nameof(dbHelper));
     Check.ArgumentNull(commandTreeFactory, nameof(commandTreeFactory));
     Check.ArgumentNull(mapperContainer, nameof(mapperContainer));
     //赋值
     this.Factory            = factory;
     this.DbHelper           = dbHelper;
     this.CommandTreeFactory = commandTreeFactory;
     this.TableMapper        = mapperContainer.GetTableMapper(typeof(TEntity));
     //初始化sql
     this._insertSql    = this.GetInsertSql();
     this._insertAllSql = this.GetInsertAllSql();
     this._deleteSql    = this.GetDeleteSql();
     this._updateSql    = this.GetUpdateSql();
     this._updateAllSql = this.GetUpdateAllSql();
 }
示例#6
0
        /// <summary>
        /// 为当前实体所Mapping的Table添加没有添加的列
        /// </summary>
        /// <param name="dbHelper">操作数据库的Helper对象</param>
        /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
        /// <param name="tableMapper">Table元数据解析器</param>
        public void AlterTableAddColumns(DbHelper dbHelper, ICommandTreeFactory commandTreeFactory, ITableMapper tableMapper)
        {
            //获取当前实体元数据解析器中某些属性Mapping的Column未包含在Table中的属性对应的ColumnMapper,并转换获取Column节点
            string[]      columnNames = this.GetColumns(dbHelper, tableMapper.Header).ToArray();
            IColumnNode[] columnNodes = (from columnMapper
                                         in tableMapper.GetColumnMappers()
                                         where !columnNames.Contains(columnMapper.ColumnName)
                                         select columnMapper.ToColumnNode()).ToArray();
            //若实体元数据解析器中所有属性Mapping的列都在当前Table中,直接退出
            if (columnNodes.Length == 0)
            {
                return;
            }
            //获取TableHeader
            ITableHeader tableHeader = tableMapper.Header;
            //创建Alter Table Columns语句生成树
            ICommandTree alterTableAddColumnsTree = commandTreeFactory.GetAlterTableAddColumnsTree(tableHeader.SchemaName, tableHeader.TableName, columnNodes);

            //生成并执行Alter Table Columns语句,为当前实体Mapping的Table添加为注册的列
            dbHelper.ExecuteUpdate(alterTableAddColumnsTree.Compile());
        }
示例#7
0
 /// <summary>
 /// 初始化
 /// </summary>
 /// <param name="mapperContainer">Mapper容器</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="dbHelper">操作数据库的DbHelper</param>
 public DbQuery(IMapperContainer mapperContainer, ICommandTreeFactory commandTreeFactory, DbHelper dbHelper)
     : base(mapperContainer, commandTreeFactory, dbHelper)
 {
     this.objectAccessor = ObjectAccessor.GetAccessor(typeof(TEntity));
 }
示例#8
0
 /// <summary>
 /// 创建DbList对象
 /// </summary>
 /// <param name="factory">创建数据源的工厂</param>
 /// <param name="dbHelper">DbHelper</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="mapperContainer">mapper容器</param>
 public DbList(IDbFactory factory, DbHelper dbHelper, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer)
     : base(factory, dbHelper, commandTreeFactory, mapperContainer)
 {
     this.modifyLocker    = new object();
     this.PropertyLinkers = new PropertyLinker[0];
 }
 /// <summary>
 /// 创建Lambda表达式解析对象
 /// </summary>
 /// <param name="parameterFactory">sql参数创建对象</param>
 /// <param name="commandTreeFactory">创建Sql命令生成树的工厂</param>
 /// <param name="mapperContainer">Mapper对象容器</param>
 public MethodCallWhereVisitor(IParameterFactory parameterFactory, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer)
     : base(parameterFactory, commandTreeFactory, mapperContainer)
 {
 }
示例#10
0
 /// <summary>
 /// 创建去除重复项查询数据源
 /// </summary>
 /// <param name="mapperContainer">Mapper容器</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="dbHelper">操作数据库的DbHelper</param>
 public DbDistinctQuery(IMapperContainer mapperContainer, ICommandTreeFactory commandTreeFactory, DbHelper dbHelper)
     : base(mapperContainer, commandTreeFactory, dbHelper)
 {
 }
 /// <summary>
 /// 创建二叉树表达式解析对象
 /// </summary>
 /// <param name="parameterFactory">sql参数创建对象</param>
 /// <param name="commandTreeFactory">创建Sql命令生成树的工厂</param>
 /// <param name="mapperContainer">Mapper容器</param>
 /// <param name="factory">创建表达式解析器的工厂</param>
 public BinaryWhereVisitor(IParameterFactory parameterFactory, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer, IWhereVisitorFactory factory)
     : base(parameterFactory, commandTreeFactory, mapperContainer)
 {
     _factory = factory;
 }
示例#12
0
 /// <summary>
 /// 创建去除TOP选定项查询数据源对象
 /// </summary>
 /// <param name="mapperContainer">Mapper容器</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="dbHelper">操作数据库的DbHelper</param>
 /// <param name="topCount">查询的前几条的元素数量</param>
 public DbTopSelectedQuery(IMapperContainer mapperContainer, ICommandTreeFactory commandTreeFactory, DbHelper dbHelper, int topCount)
     : base(mapperContainer, commandTreeFactory, dbHelper)
 {
     this.topCount = topCount;
 }
示例#13
0
 /// <summary>
 /// 创建带事故执行的实体数据操作对象
 /// </summary>
 /// <param name="factory">数据源创建工厂</param>
 /// <param name="dbHelper">数据库操作对象</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="mapperContainer">mapper容器</param>
 /// <param name="transaction">事故</param>
 public DbTransactionOperator(IDbFactory factory, DbHelper dbHelper, ICommandTreeFactory commandTreeFactory, IMapperContainer mapperContainer, IDbTransaction transaction)
     : base(factory, dbHelper, commandTreeFactory, mapperContainer)
 {
     this.transaction = transaction;
 }
示例#14
0
 /// <summary>
 /// 创建操作数据库的基础对象
 /// </summary>
 /// <param name="mapperContainer">Mapper容器</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="dbHelper">操作数据库的DbHelper</param>
 public DbBase(IMapperContainer mapperContainer, ICommandTreeFactory commandTreeFactory, DbHelper dbHelper)
 {
     this.MapperContainer    = mapperContainer;
     this.CommandTreeFactory = commandTreeFactory;
     this.DbHelper           = dbHelper;
 }
示例#15
0
 /// <summary>
 /// 创建统计查询类
 /// </summary>
 /// <param name="mapperContainer">Mapper容器</param>
 /// <param name="commandTreeFactory">创建CommandTree的工厂</param>
 /// <param name="dbHelper">操作数据库的DbHelper</param>
 public DbScalar(IMapperContainer mapperContainer, ICommandTreeFactory commandTreeFactory, DbHelper dbHelper)
     : base(mapperContainer, commandTreeFactory, dbHelper)
 {
 }