using SqlSugar; namespace Gs.Toolbox; public class Repository : SimpleClient where T : class, new() { protected static SqlSugarScope Db = new(new ConnectionConfig { DbType = DbType.SqlServer, ConnectionString = AppSettingsHelper.getValueByKey("ConnectionStrings"), IsAutoCloseConnection = true }, db => { db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine( UtilMethods.GetSqlString(DbType.Oracle, sql, pars)); }; }); public Repository(ISqlSugarClient context = null) : base(context) { if (context == null) Context = Db; } protected int UseTransaction(Func action) { try { Db.Ado.BeginTran(); // 开始事务 var affectedRows = action.Invoke(Db); // 执行传入的操作并获取受影响的行数 Db.Ado.CommitTran(); // 提交事务 return affectedRows; // 返回受影响的行数 } catch (Exception) { Db.Ado.RollbackTran(); // 回滚事务 throw; // 重新抛出异常 } } public object CommonPage(QueryParameters pars, int pageIndex, int pagesize) { var tolCount = 0; var sugarParamters = pars.Parameters.Select(it => (IConditionalModel)new ConditionalModel { ConditionalType = it.ConditionalType, FieldName = it.FieldName, FieldValue = it.FieldValue }).ToList(); var query = Db.Queryable(); if (pars.OrderBys != null) foreach (var item in pars.OrderBys) query.OrderBy(item.ToSqlFilter()); var result = query.Where(sugarParamters) .ToPageList(pageIndex, pagesize, ref tolCount); return new { count = tolCount, data = result }; } public object CommonPage(ISugarQueryable query, QueryParameters pars, int pageIndex, int pagesize) { var tolCount = 0; var sugarParamters = pars.Parameters.Select(it => (IConditionalModel)new ConditionalModel { ConditionalType = it.ConditionalType, FieldName = it.FieldName, FieldValue = it.FieldValue }).ToList(); if (pars.OrderBys != null) foreach (var item in pars.OrderBys) query.OrderBy(item.ToSqlFilter()); var result = query.Where(sugarParamters) .ToPageList(pageIndex, pagesize, ref tolCount); return new { count = tolCount, data = result }; } } public class QueryParameters { public List Parameters { get; set; } public List OrderBys { get; set; } } public class QueryParameter { public string FieldName { get; set; } public string FieldValue { get; set; } public ConditionalType ConditionalType { get; set; } }