using SqlSugar; using System; using System.Collections.Generic; using System.Data; using System.Dynamic; using System.Linq.Expressions; using System.Reflection; using System.Text; using System.Threading.Tasks; using Wms.Screen.SqlSugar.ZhongTian; namespace Wms.Screen.SqlSugar.Repository { public class Repository : IRepository where T : BaseModel, new() { public SqlSugarClient _db; public Repository(SqlSugarClient dbContext) { _db = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); } public DbResult UseTran(Action action) { var result = _db.Ado.UseTran(() => action()); return result; } public DbResult UseTran(SqlSugarClient client, Action action) { var result = client.Ado.UseTran(() => action()); return result; } public bool UseTran2(Action action) { var result = _db.Ado.UseTran(() => action()); return result.IsSuccess; } #region query public bool IsAny(Expression> expression) { return _db.Queryable().Where(expression).Any(); } public ISugarQueryable Queryable() { return _db.Queryable(); } public ISugarQueryable QueryableIncludeDelete() { return _db.Queryable(); } public ISugarQueryable Queryable(Expression> expression) { return _db.Queryable().Where(expression); } public ISugarQueryable Queryable(string tableName, string shortName) { return _db.Queryable(tableName, shortName); } public List QueryableToList(Expression> expression) { return _db.Queryable().Where(expression).ToList(); } public Task> QueryableToListAsync(Expression> expression) { return _db.Queryable().Where(expression).ToListAsync(); } //public string QueryableToJson(string select, Expression> expressionWhere) //{ // var query = _db.Queryable().Select(select).Where(expressionWhere).Where(p => p.IsDelete == 0).ToList(); // return query.JilToJson(); //} public T QueryableToEntity(Expression> expression) { return _db.Queryable().Where(expression).First(); } public List QueryableToList(string tableName) { return _db.Queryable(tableName).ToList(); } public List QueryableToList(string tableName, Expression> expression) { return _db.Queryable(tableName).Where(expression).ToList(); } public (List, int) QueryableToPage(Expression> expression, int pageIndex = 0, int pageSize = 10) { int totalNumber = 0; var list = _db.Queryable().Where(expression).ToPageList(pageIndex, pageSize, ref totalNumber); return (list, totalNumber); } public (List, int) QueryableToPage(Expression> expression, string order, int pageIndex = 0, int pageSize = 10) { int totalNumber = 0; var list = _db.Queryable().Where(expression).OrderBy(order).ToPageList(pageIndex, pageSize, ref totalNumber); return (list, totalNumber); } public (List, int) QueryableToPage(Expression> expression, Expression> orderFiled, string orderBy, int pageIndex = 0, int pageSize = 10) { int totalNumber = 0; if (orderBy.Equals("DESC", StringComparison.OrdinalIgnoreCase)) { var list = _db.Queryable().Where(expression).OrderBy(orderFiled, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref totalNumber); return (list, totalNumber); } else { var list = _db.Queryable().Where(expression).OrderBy(orderFiled, OrderByType.Asc).ToPageList(pageIndex, pageSize, ref totalNumber); return (list, totalNumber); } } public List SqlQueryToList(string sql, object obj = null) { return _db.Ado.SqlQuery(sql, obj); } #endregion query /// /// 此方法不带output返回值 /// var list = new List(); /// list.Add(new SugarParameter(ParaName, ParaValue)); input /// /// /// /// public DataTable UseStoredProcedureToDataTable(string procedureName, List parameters) { return _db.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters); } /// /// 带output返回值 /// var list = new List(); /// list.Add(new SugarParameter(ParaName, ParaValue, true)); output /// list.Add(new SugarParameter(ParaName, ParaValue)); input /// /// /// /// public (DataTable, List) UseStoredProcedureToTuple(string procedureName, List parameters) { var result = (_db.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters), parameters); return result; } } }