using Infrastructure.Attribute; using Infrastructure.Model; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using ZR.Model; using ZR.Repository.DbProvider; namespace ZR.Service { /// /// 基础服务定义 /// /// public class BaseService : SugarDbContext, IBaseService where T : class, new() { #region 事务 /// /// 启用事务 /// public void BeginTran() { Db.Ado.BeginTran(); } /// /// 提交事务 /// public void CommitTran() { Db.Ado.CommitTran(); } /// /// 回滚事务 /// public void RollbackTran() { Db.Ado.RollbackTran(); } #endregion #region 添加操作 /// /// 添加一条数据 /// /// T /// public int Add(T parm) { return Db.Insertable(parm).RemoveDataCache().ExecuteCommand(); } /// /// 添加 /// /// /// 插入列 /// 忽略null列 /// public int Add(T parm, Expression> iClumns = null, bool ignoreNull = true) { return Db.Insertable(parm).InsertColumns(iClumns).IgnoreColumns(ignoreNullColumn: ignoreNull).ExecuteCommand(); } /// /// 批量添加数据 /// /// List /// public int Add(List parm) { return Db.Insertable(parm).RemoveDataCache().ExecuteCommand(); } /// /// 添加或更新数据,不推荐使用了 /// /// List /// public T Saveable(T parm, Expression> uClumns = null, Expression> iColumns = null) { var command = Db.Saveable(parm); if (uClumns != null) { command = command.UpdateIgnoreColumns(uClumns); } if (iColumns != null) { command = command.InsertIgnoreColumns(iColumns); } return command.ExecuteReturnEntity(); } /// /// 批量添加或更新数据 /// /// List /// public List Saveable(List parm, Expression> uClumns = null, Expression> iColumns = null) { var command = Db.Saveable(parm); if (uClumns != null) { command = command.UpdateIgnoreColumns(uClumns); } if (iColumns != null) { command = command.InsertIgnoreColumns(iColumns); } return command.ExecuteReturnList(); } #endregion #region 查询操作 /// /// 根据条件查询数据是否存在 /// /// 条件表达式树 /// public bool Any(Expression> where) { return Db.Queryable().Any(where); } /// /// 根据条件合计字段 /// /// 条件表达式树 /// public TResult Sum(Expression> where, Expression> field) { return Db.Queryable().Where(where).Sum(field); } /// /// 根据主值查询单条数据 /// /// 主键值 /// 泛型实体 public T GetId(object pkValue) { return Db.Queryable().InSingle(pkValue); } /// /// 根据主键查询多条数据 /// /// /// public List GetIn(object[] ids) { return Db.Queryable().In(ids).ToList(); } /// /// 根据条件取条数 /// /// 条件表达式树 /// public int GetCount(Expression> where) { return Db.Queryable().Count(where); } /// /// 查询所有数据(无分页,请慎用) /// /// public List GetAll(bool useCache = false, int cacheSecond = 3600) { return Db.Queryable().WithCacheIF(useCache, cacheSecond).ToList(); } /// /// 获得一条数据 /// /// Expression> /// public T GetFirst(Expression> where) { return Db.Queryable().Where(where).First(); } /// /// 获得一条数据 /// /// string /// public T GetFirst(string parm) { return Db.Queryable().Where(parm).First(); } /// /// 根据条件查询分页数据 /// /// /// /// public PagedInfo GetPages(Expression> where, PagerInfo parm) { var source = Db.Queryable().Where(where); return source.ToPage(parm); } public PagedInfo GetPages(Expression> where, PagerInfo parm, Expression> order, string orderEnum = "Asc") { var source = Db.Queryable().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc); return source.ToPage(parm); } /// /// 根据条件查询数据 /// /// 条件表达式树 /// public List GetWhere(Expression> where, bool useCache = false, int cacheSecond = 3600) { var query = Db.Queryable().Where(where).WithCacheIF(useCache, cacheSecond); return query.ToList(); } /// /// 根据条件查询数据 /// /// 条件表达式树 /// public List GetWhere(Expression> where, Expression> order, string orderEnum = "Asc", bool useCache = false, int cacheSecond = 3600) { var query = Db.Queryable().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc).WithCacheIF(useCache, cacheSecond); return query.ToList(); } #endregion #region 修改操作 /// /// 修改一条数据 /// /// T /// public int Update(T parm) { return Db.Updateable(parm).RemoveDataCache().ExecuteCommand(); } /// /// 批量修改 /// /// T /// public int Update(List parm) { return Db.Updateable(parm).RemoveDataCache().ExecuteCommand(); } /// /// 按查询条件更新 /// /// /// /// public int Update(Expression> where, Expression> columns) { return Db.Updateable().SetColumns(columns).Where(where).RemoveDataCache().ExecuteCommand(); } #endregion #region 删除操作 /// /// 删除一条或多条数据 /// /// string /// public int Delete(object id) { return Db.Deleteable(id).RemoveDataCache().ExecuteCommand(); } /// /// 删除一条或多条数据 /// /// string /// public int Delete(object[] ids) { return Db.Deleteable().In(ids).RemoveDataCache().ExecuteCommand(); } /// /// 根据条件删除一条或多条数据 /// /// 过滤条件 /// public int Delete(Expression> where) { return Db.Deleteable().Where(where).RemoveDataCache().ExecuteCommand(); } public int DeleteTable() { return Db.Deleteable().RemoveDataCache().ExecuteCommand(); } #endregion } }