using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace System.Common { public class BaseRepository : BaseContext, IRepository where T : class, new() { //public SimpleClient CurrentDb => new SimpleClient(Db); /// /// 获取数量 /// /// /// public async Task GetCount(Expression> whereExpression = null) { if (whereExpression != null) return await Db.Queryable().With(SqlWith.NoLock).CountAsync(whereExpression); else return await Db.Queryable().With(SqlWith.NoLock).CountAsync(); } /// /// 获取所有 /// /// public async Task> GetList() { return await Db.Queryable().With(SqlWith.NoLock).ToListAsync(); //return CurrentDb.GetList(); } public async Task> GetListALL(Expression> whereExpression) { return await Db.Queryable().With(SqlWith.NoLock).Where(whereExpression).ToListAsync(); } public async Task> GetListALL(List conModels, string orderby) { return await Db.Queryable().With(SqlWith.NoLock).Where(conModels).OrderBy(orderby).ToListAsync(); } public async Task> GetListALL(Expression> whereExpression, Expression> orderExpression, OrderByType ordertype = OrderByType.Asc) { return await Db.Queryable().With(SqlWith.NoLock).Where(whereExpression).OrderBy(orderExpression,ordertype).ToListAsync(); } /// /// 分页获取所有 /// /// /// /// public async Task> GetListByPage(List conModels, MyPageModel pagemodel,string orderby) { var list= await Db.Queryable().With(SqlWith.NoLock).Where(conModels).OrderBy(orderby).ToPageListAsync(pagemodel.PageIndex, pagemodel.PageSize, pagemodel.PageCount); PageData pd = new PageData(); pd.Rows = list; pd.Totals = pagemodel.PageCount; return pd;// CurrentDb.GetPageList(conModels, pagemodel); } public async Task> GetListByPage(List conModels, MyPageModel pagemodel) { var list = await Db.Queryable().With(SqlWith.NoLock).Where(conModels).ToPageListAsync(pagemodel.PageIndex, pagemodel.PageSize, pagemodel.PageCount); PageData pd = new PageData(); pd.Rows = list; pd.Totals = pagemodel.PageCount; return pd;// CurrentDb.GetPageList(conModels, pagemodel); } public async Task> GetListByPage(Expression> whereExpression, MyPageModel pagemodel) { var list = await Db.Queryable().With(SqlWith.NoLock).Where(whereExpression).ToPageListAsync(pagemodel.PageIndex, pagemodel.PageSize, pagemodel.PageCount); PageData pd = new PageData(); pd.Rows = list; pd.Totals = pagemodel.PageCount; return pd;// CurrentDb.GetPageList(conModels, pagemodel); } public async Task> GetListByPage(Expression> whereExpression, MyPageModel pagemodel, string orderby) { var list = await Db.Queryable().With(SqlWith.NoLock).Where(whereExpression).OrderBy(orderby).ToPageListAsync(pagemodel.PageIndex, pagemodel.PageSize, pagemodel.PageCount); PageData pd = new PageData(); pd.Rows = list; pd.Totals = pagemodel.PageCount; return pd;// CurrentDb.GetPageList(conModels, pagemodel); } public async Task GetSingle(Expression> whereExpression) { return await Db.Queryable().With(SqlWith.NoLock).Where(whereExpression).SingleAsync(); //return CurrentDb.GetSingle(whereExpression); } /// /// 添加 /// /// /// public async Task Add(T obj) { return await Db.Insertable(obj).ExecuteReturnIdentityAsync(); //return CurrentDb.InsertReturnIdentity(obj); } /// /// 添加排除某列 /// /// /// public async Task AddIgnore(T obj, Expression> IgnoreColumns) { return await Db.Insertable(obj).IgnoreColumns(IgnoreColumns).ExecuteReturnIdentityAsync(); //return CurrentDb.InsertReturnIdentity(obj); } /// /// 强势插入,插入自增值 /// /// /// 是否强势 /// public async Task AddStrong(T obj,bool isStrong=false) { return await Db.Insertable(obj).IgnoreColumns(true, isStrong).ExecuteReturnIdentityAsync(); //return CurrentDb.InsertReturnIdentity(obj); } /// /// 批量添加 /// /// /// public async Task AddMany(List objlist) { var res = await Db.Insertable(objlist).ExecuteCommandAsync(); return res > 0; } /// /// 根据条件删除 /// /// public async Task Delete(Expression> whereExpression) { return await Db.Deleteable(whereExpression).ExecuteCommandHasChangeAsync(); //return CurrentDb.Delete(whereExpression); } /// /// 更新 /// /// /// public async Task Update(T obj) { return await Db.Updateable(obj).ExecuteCommandHasChangeAsync(); //return CurrentDb.Update(obj); } /// /// 批量整条更新 /// /// /// public async Task UpdateList(List obj) { return await Db.Updateable(obj).ExecuteCommandHasChangeAsync(); //return CurrentDb.Update(obj); } /// /// 批量指定字段更新 方法有待考究 /// /// model => new { model.Name } /// [Obsolete] public async Task UpdateListToColumns(List obj, Expression> objColumns) { return await Db.Updateable(obj).UpdateColumns(objColumns).ExecuteCommandHasChangeAsync(); //return CurrentDb.Update(obj); } } }