| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
-
- 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<T> : IRepository<T> where T : BaseModel, new()
- {
- public SqlSugarClient _db;
- public Repository(SqlSugarClient dbContext)
- {
- _db = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
- }
- public DbResult<bool> UseTran(Action action)
- {
- var result = _db.Ado.UseTran(() => action());
- return result;
- }
- public DbResult<bool> 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<Func<T, bool>> expression)
- {
- return _db.Queryable<T>().Where(expression).Any();
- }
- public ISugarQueryable<T> Queryable()
- {
- return _db.Queryable<T>();
- }
- public ISugarQueryable<T> QueryableIncludeDelete()
- {
- return _db.Queryable<T>();
- }
- public ISugarQueryable<T> Queryable(Expression<Func<T, bool>> expression)
- {
- return _db.Queryable<T>().Where(expression);
- }
- public ISugarQueryable<ExpandoObject> Queryable(string tableName, string shortName)
- {
- return _db.Queryable(tableName, shortName);
- }
- public List<T> QueryableToList(Expression<Func<T, bool>> expression)
- {
- return _db.Queryable<T>().Where(expression).ToList();
- }
- public Task<List<T>> QueryableToListAsync(Expression<Func<T, bool>> expression)
- {
- return _db.Queryable<T>().Where(expression).ToListAsync();
- }
- //public string QueryableToJson(string select, Expression<Func<T, bool>> expressionWhere)
- //{
- // var query = _db.Queryable<T>().Select(select).Where(expressionWhere).Where(p => p.IsDelete == 0).ToList();
- // return query.JilToJson();
- //}
- public T QueryableToEntity(Expression<Func<T, bool>> expression)
- {
- return _db.Queryable<T>().Where(expression).First();
- }
- public List<T> QueryableToList(string tableName)
- {
- return _db.Queryable<T>(tableName).ToList();
- }
- public List<T> QueryableToList(string tableName, Expression<Func<T, bool>> expression)
- {
- return _db.Queryable<T>(tableName).Where(expression).ToList();
- }
- public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, int pageIndex = 0, int pageSize = 10)
- {
- int totalNumber = 0;
- var list = _db.Queryable<T>().Where(expression).ToPageList(pageIndex, pageSize, ref totalNumber);
- return (list, totalNumber);
- }
- public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, string order, int pageIndex = 0, int pageSize = 10)
- {
- int totalNumber = 0;
- var list = _db.Queryable<T>().Where(expression).OrderBy(order).ToPageList(pageIndex, pageSize, ref totalNumber);
- return (list, totalNumber);
- }
- public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, Expression<Func<T, object>> orderFiled, string orderBy, int pageIndex = 0, int pageSize = 10)
- {
- int totalNumber = 0;
- if (orderBy.Equals("DESC", StringComparison.OrdinalIgnoreCase))
- {
- var list = _db.Queryable<T>().Where(expression).OrderBy(orderFiled, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref totalNumber);
- return (list, totalNumber);
- }
- else
- {
- var list = _db.Queryable<T>().Where(expression).OrderBy(orderFiled, OrderByType.Asc).ToPageList(pageIndex, pageSize, ref totalNumber);
- return (list, totalNumber);
- }
- }
- public List<T> SqlQueryToList(string sql, object obj = null)
- {
- return _db.Ado.SqlQuery<T>(sql, obj);
- }
- #endregion query
- /// <summary>
- /// 此方法不带output返回值
- /// var list = new List<SugarParameter>();
- /// list.Add(new SugarParameter(ParaName, ParaValue)); input
- /// </summary>
- /// <param name="procedureName"></param>
- /// <param name="parameters"></param>
- /// <returns></returns>
- public DataTable UseStoredProcedureToDataTable(string procedureName, List<SugarParameter> parameters)
- {
- return _db.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters);
- }
- /// <summary>
- /// 带output返回值
- /// var list = new List<SugarParameter>();
- /// list.Add(new SugarParameter(ParaName, ParaValue, true)); output
- /// list.Add(new SugarParameter(ParaName, ParaValue)); input
- /// </summary>
- /// <param name="procedureName"></param>
- /// <param name="parameters"></param>
- /// <returns></returns>
- public (DataTable, List<SugarParameter>) UseStoredProcedureToTuple(string procedureName, List<SugarParameter> parameters)
- {
- var result = (_db.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters), parameters);
- return result;
- }
- }
- }
|