/// <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())); }
/// <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; }
/// <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(); }
/// <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()); }
/// <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)); }
/// <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) { }
/// <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; }
/// <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; }
/// <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; }
/// <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; }
/// <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) { }