internal Queue(InternalContext context, SetDataMap map) { ID = Guid.NewGuid(); Context = context; Map = map; CreateAt = DateTime.Now; }
/// <summary> /// 释放资源 /// </summary> /// <param name="disposing">是否释放托管资源</param> private void Dispose(bool disposing) { //释放托管资源 if (disposing) { Context = null; Map = null; _expBuilder = null; _sqlBuilder = null; _procBuilder = null; LazyAct = null; } }
/// <summary> /// 延迟执行数据库交互,并提交到队列 /// </summary> /// <param name="act">要延迟操作的委托</param> /// <param name="map">字段映射</param> /// <param name="joinSoftDeleteCondition">是否加入逻辑删除数据过滤</param> internal int CommitLazy(SetDataMap map, Func <Queue, int> act, bool joinSoftDeleteCondition) { if (!ContextProvider.IsMergeCommand) { return(Commit(map, act, joinSoftDeleteCondition)); } try { var queue = CreateQueue(map); if (joinSoftDeleteCondition) { queue.ExpBuilder.DeleteSortCondition(); } queue.LazyAct = act; _groupQueueList.Add(_queue); return(0); } finally { Clear(); } }
/// <summary> /// 立即执行 /// </summary> /// <param name="act">要延迟操作的委托</param> /// <param name="map">字段映射</param> /// <param name="joinSoftDeleteCondition">是否加入逻辑删除数据过滤</param> internal async Task <TReturn> CommitAsync <TReturn>(SetDataMap map, Func <Queue, Task <TReturn> > act, bool joinSoftDeleteCondition) { try { var queue = CreateQueue(map); if (joinSoftDeleteCondition) { queue.ExpBuilder.DeleteSortCondition(); } return(await act(queue)); } finally { Clear(); if (ContextProvider.IsUnitOfWork) { ContextProvider.Executeor.DataBase.Close(true); } } }
/// <summary> /// 立即执行 /// </summary> /// <param name="act">要延迟操作的委托</param> /// <param name="map">字段映射</param> /// <param name="joinSoftDeleteCondition">是否加入逻辑删除数据过滤</param> internal TReturn Commit <TReturn>(SetDataMap map, Func <Queue, TReturn> act, bool joinSoftDeleteCondition) { try { // 立即删除时,先提交队列中的数据 ContextProvider.QueueManger.CommitAll(); var queue = CreateQueue(map); if (joinSoftDeleteCondition) { queue.ExpBuilder.DeleteSortCondition(); } return(act(queue)); } finally { Clear(); if (!ContextProvider.IsMergeCommand) { ContextProvider.Executeor.DataBase.Close(true); } } }
/// <summary> /// 提供字段插入表达式树的解析 /// </summary> /// <param name="dbProvider">数据库提供者(不同数据库的特性)</param> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public InsertVisitor(AbsDbProvider dbProvider, SetDataMap map, List <DbParameter> paramList) : base(dbProvider, map, paramList) { }
/// <summary> /// 获取当前队列(不存在,则创建) /// </summary> /// <param name="map">字段映射</param> internal Queue CreateQueue(SetDataMap map) { return(_queue ?? (_queue = new Queue(ContextProvider, map))); }
/// <summary> /// Select筛选字段时表达式树的解析 /// </summary> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public virtual WhereVisitor CreateWhereVisitor(SetDataMap map, List <DbParameter> paramList) => new WhereVisitor(this, map, paramList);
/// <summary> /// 存储过程生成器 /// </summary> /// <param name="dbProvider">数据库驱动</param> /// <param name="setMap">实体类映射</param> /// <param name="name">存储过程名称</param> internal ProcBuilder(AbsDbProvider dbProvider, SetDataMap setMap, string name) { _dbProvider = dbProvider; _setMap = setMap; Name = name; }
/// <summary> /// 提供字段排序时表达式树的解析 /// </summary> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public virtual OrderByVisitor CreateOrderByVisitor(SetDataMap map, List <DbParameter> paramList) => new OrderByVisitor(this, map, paramList);
/// <summary> /// 提供字段插入表达式树的解析 /// </summary> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public virtual InsertVisitor CreateInsertVisitor(SetDataMap map, List <DbParameter> paramList) => new InsertVisitor(this, map, paramList);
/// <summary> /// 提供字段赋值时表达式树的解析 /// </summary> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public virtual AssignVisitor CreateAssignVisitor(SetDataMap map, List <DbParameter> paramList) => new AssignVisitor(this, map, paramList);
/// <summary> /// Select筛选字段时表达式树的解析 /// </summary> /// <param name="dbProvider">数据库提供者(不同数据库的特性)</param> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public OleDbWhereVisitor(AbsDbProvider dbProvider, SetDataMap map, List <DbParameter> paramList) : base(dbProvider, map, paramList) { }
/// <summary> /// 默认构造器 /// </summary> /// <param name="dbProvider">数据库提供者(不同数据库的特性)</param> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> protected AbsSqlVisitor(AbsDbProvider dbProvider, SetDataMap map, List <DbParameter> paramList) { DbProvider = dbProvider; SetMap = map; ParamList = paramList; }
/// <summary> /// Select筛选字段时表达式树的解析 /// </summary> /// <param name="map">字段映射</param> /// <param name="paramList">SQL参数列表</param> public virtual SelectVisitor CreateSelectVisitor(SetDataMap map, List <DbParameter> paramList) => new SelectVisitor(this, map, paramList);
internal ExpressionBuilder(SetDataMap map) { SetMap = map; }
public override WhereVisitor CreateWhereVisitor(SetDataMap map, List <DbParameter> paramList) => new OleDbWhereVisitor(this, map, paramList);