using JSMachine.WMS.App.Dto; using JSMachine.WMS.Domain.Entity; using JSMachine.WMS.Domain.IRepository; using JSMachine.WMS.Domain.Repository; using SqlSugar; using System.Data; using System.Linq.Expressions; namespace JSMachine.WMS.App.IService { public interface IBaseService where TAggregateRoot : AggregateRoot, IAggregateRoot where TDTO : IRootDto { #region Add /// /// 添加单个实体 /// /// /// Task Add(TDTO entity, SqlSugarScope sqlSugarScope=null); /// /// 添加单个实体 /// /// /// 要忽略的字段 /// Task Add(TDTO dto, params string[] ignoreColumns); /// /// 批量插入实体 /// /// /// Task Add(List entities); /// /// 字典方式添加单个实体 /// /// 表名称 /// /// Task Add(string tableName, Dictionary dic); /// /// 添加之前判断指定字段是否存在,不存在则添加 /// /// /// /// Task AddIfNotExist(TDTO entity, Expression> expression); #endregion #region Delete /// /// 根据Id删除记录 /// /// /// Task DeleteById(Guid id, SqlSugarScope sqlSugarScope=null); /// /// 根据Id批量删除 /// /// /// Task DeleteBatch(Guid[] ids); /// /// 根据实体删除 /// /// /// Task DeleteByEntity(TDTO aggregateRoot); /// /// 根据实体批量删除 /// /// /// 受影响行数不等于实体数量视为删除失败 Task DeleteByEntity(List aggregateRoot); /// /// 根据条件删除 /// /// /// Task DeleByExpression(Expression> expression); #endregion #region Edit /// /// 更改单个实体 /// /// /// Task EditSingal(TDTO aggregateRoot); /// /// 更改单个实体但忽略指定的列 /// /// /// 忽略指定的条件 /// Task EditSingal(TDTO aggregateRoot, Expression> ignoredColumns); /// /// 更改单个实体但忽略指定的列 /// /// /// 要忽略的列名 /// Task EditSingal(TDTO aggregateRoot, string[] ignoredColumns); /// /// 更改单个实体中指定的列 /// /// /// 要更改的列名 /// Task EditSingalWithSpecificCols(TDTO aggregateRoot, string[] columns); /// /// 批量更新 /// /// /// Task EditBatch(List aggregateRoots); /// /// 快速批量更新 /// /// /// Task EditBatchFast(List aggregateRoots); /// /// 字典方式更改 /// /// /// /// Task EditByDic(string tableName, Dictionary dic); /// /// 字典方式批量更改 /// /// /// /// Task EditByDic(string tableName, List> dic); #endregion #region Query /// /// 查询所有 /// /// Task> GetAll(); /// /// 查询所有 /// /// Task> GetAll(string orderByFiled, OrderByType orderByType); /// /// 分片查询所有 /// /// 分片大小,分片越大效率越高,但是占用的内存也越大,需要合理考虑数据量和硬件性能确定此参数大小 /// Task> GetAllFragment(int fragmentSize = 50000); /// /// 分片查询所有(带排序功能) /// /// 要排序的字段 /// 排序方式 /// 分片大小,分片越大效率越高,但是占用的内存也越大,需要合理考虑数据量和硬件性能确定此参数大小 /// Task> GetAllFragment(string orderByFiled, OrderByType orderByType, int fragmentSize = 200); /// /// 根据条件查询数量 /// /// /// Task Count(Expression> expression); /// /// 根据主键查询 /// /// /// Task QueryByKey(string key); /// /// 查询满足条件的第一个 /// /// /// Task GetSingalByExpression(Expression> expression); /// /// 查询满足条件的第一个(带排序) /// /// /// /// /// Task GetSingalByExpression( Expression> expression, Expression> orderByExpress, OrderByType orderByType); /// /// 查询满足条件的所有实体 /// 注意 在oracle数据中时间段范围查询请使用 SqlFunc.Oracle_ToDate,可大幅提高查询速度 /// /// /// /// Task> GetListByExpression(Expression> expression); /// /// 查询满足条件的所有实体(带排序功能) /// /// /// /// /// Task> GetListByExpression(Expression> expression, string filedName, OrderByType orderByType = OrderByType.Desc); /// /// 通过实体查询满足条件的数据 /// /// /// Task> GetListWhereClass(TDTO dto); /// /// 分页查询 /// /// 当前页码 /// /// 总记录条数 /// 查询条件 /// Task> QueryByPage(PageQueryCondition commonQueryCondition); /// /// 根据主键批量查询 /// /// /// Task> QueryByIds(Guid[] ids); /// /// 是否存在 /// /// /// Task Exist(Expression> expression); #endregion #region RawSql Sql操作 /// /// sql查询,不带参数 /// /// /// Task> GetBySql(string sql); /// /// sql查询,带参数 参数示例 select * from table where id=@id and name=@name 则字典的key为 "@id" /// /// /// /// Task> GetBySql(string sql, Dictionary sqlParam); /// /// sql查询匿名类型 /// /// /// Task> GetDynamicsBysql(string sql); /// /// sql查询匿名类型,附带参数 参数示例 select * from table where id=@id and name=@name 则字典的key为 "@id" /// /// /// /// Task> GetDynamicsBysql(string sql, Dictionary sqlParam); /// /// 通过sql查询DataTable /// /// /// Task GetDataTableBysql(string sql); /// /// 通过sql查询DataTable, 参数示例 select * from table where id=@id and name=@name 则字典的key为 "@id" /// /// /// /// Task GetDataTableBysql(string sql, Dictionary sqlParam); /// /// 执行原生sql /// /// /// /// Task ExcuteSql(string sql, params SugarParameter[] @params); #endregion #region 事务 /// /// 开始事务 /// /// Task BeginTran(SqlSugarScope sqlSugarScope); /// /// 提交事务 /// /// Task CommitTran(SqlSugarScope sqlSugarScope); /// /// 回滚事务 /// /// Task RollbackTran(SqlSugarScope sqlSugarScope); SqlSugarTransaction UseTranAsync(); #endregion } }