using System; using System.Text; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Linq; using System.Linq.Expressions; using System.Text.RegularExpressions; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using YiSha.Util; using YiSha.Util.Model; namespace YiSha.Data.Repository { /// /// 创建人:admin /// 日 期:2018.10.18 /// 描 述:定义仓储模型中的数据标准操作接口 /// public class Repository { #region 构造函数 public IDatabase db; public Repository(IDatabase iDatabase) { this.db = iDatabase; } #endregion #region 事务提交 public async Task BeginTrans() { await db.BeginTrans(); return this; } public async Task CommitTrans() { return await db.CommitTrans(); } public async Task RollbackTrans() { await db.RollbackTrans(); } #endregion #region 执行 SQL 语句 public async Task ExecuteBySql(string strSql) { return await db.ExecuteBySql(strSql); } public async Task ExecuteBySql(string strSql, params DbParameter[] dbParameter) { return await db.ExecuteBySql(strSql, dbParameter); } public async Task ExecuteByProc(string procName) { return await db.ExecuteByProc(procName); } public async Task ExecuteByProc(string procName, params DbParameter[] dbParameter) { return await db.ExecuteByProc(procName, dbParameter); } #endregion #region 对象实体 添加、修改、删除 public async Task Insert(T entity) where T : class { return await db.Insert(entity); } public async Task Insert(List entity) where T : class { return await db.Insert(entity); } public async Task Delete() where T : class { return await db.Delete(); } public async Task Delete(T entity) where T : class { return await db.Delete(entity); } public async Task Delete(List entity) where T : class { return await db.Delete(entity); } public async Task Delete(Expression> condition) where T : class, new() { return await db.Delete(condition); } public async Task Delete(string id) where T : class { return await db.Delete(id); } public async Task Delete(string[] id) where T : class { return await db.Delete(id); } public async Task Delete(string propertyName, string propertyValue) where T : class { return await db.Delete(propertyName, propertyValue); } public async Task Update(T entity) where T : class { return await db.Update(entity); } public async Task Update(List entity) where T : class { return await db.Update(entity); } public async Task UpdateAllField(T entity) where T : class { return await db.UpdateAllField(entity); } public async Task Update(Expression> condition) where T : class, new() { return await db.Update(condition); } public IQueryable IQueryable(Expression> condition) where T : class, new() { return db.IQueryable(condition); } #endregion #region 对象实体 查询 public async Task FindEntity(int id) where T : class { return await db.FindEntity(id); } public async Task FindEntity(Expression> condition) where T : class, new() { return await db.FindEntity(condition); } public async Task> FindList() where T : class, new() { return await db.FindList(); } public async Task> FindList(Expression> condition) where T : class, new() { return await db.FindList(condition); } public async Task> FindList(string strSql) where T : class { return await db.FindList(strSql); } public async Task> FindList(string strSql, DbParameter[] dbParameter) where T : class { return await db.FindList(strSql, dbParameter); } public async Task<(int total, IEnumerable list)> FindList(Pagination pagination) where T : class, new() { int total = pagination.TotalCount; var data = await db.FindList(pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex); pagination.TotalCount = total; return data; } public async Task> FindList(Expression> condition, Pagination pagination) where T : class, new() { var data = await db.FindList(condition, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex); pagination.TotalCount = data.total; return data.list; } public async Task<(int total, IEnumerable list)> FindList(string strSql, Pagination pagination) where T : class { int total = pagination.TotalCount; var data = await db.FindList(strSql, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex); pagination.TotalCount = total; return data; } public async Task> FindList(string strSql, DbParameter[] dbParameter, Pagination pagination) where T : class { var data = await db.FindList(strSql, dbParameter, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex); pagination.TotalCount = data.total; return data.Item2; } #endregion #region 数据源 查询 public async Task FindTable(string strSql) { return await db.FindTable(strSql); } public async Task FindTable(string strSql, DbParameter[] dbParameter) { return await db.FindTable(strSql, dbParameter); } public async Task FindTable(string strSql, Pagination pagination) { var data = await db.FindTable(strSql, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex); pagination.TotalCount = data.total; return data.Item2; } public async Task FindTable(string strSql, DbParameter[] dbParameter, Pagination pagination) { var data = await db.FindTable(strSql, dbParameter, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex); pagination.TotalCount = data.total; return data.Item2; } public async Task FindObject(string strSql) { return await db.FindObject(strSql); } public async Task FindObject(string strSql, DbParameter[] dbParameter) { return await db.FindObject(strSql, dbParameter); } public async Task FindObject(string strSql, DbParameter[] dbParameter = null) where T : class { return await db.FindObject(strSql, dbParameter); } #endregion } }