using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Xzy.KnowledgeBase.Domain.Map; using Xzy.KnowledgeBase.Domain.Model; namespace Xzy.KnowledgeBase.Domain.Repositories.Base { public class Repository : SimpleClient where T : class, new() { public Repository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null { if (context == null) { } //Sqlite.DbMaintenance.CreateDatabase(); //Sqlite.CodeFirst.InitTables(typeof(CodeFirstTable1)); } //注意:如果使用Client不能写成静态的,Scope并发更高 public static SqlSugarScope Sqlite = SqlSugarHelper.Sqlite; public SimpleClient CurrentDb { get { return new SimpleClient(Sqlite); } }//用来处理T表的常用操作 #region 通用方法 public virtual SqlSugarScope GetDB() { return Sqlite; } /// /// 获取所有list /// /// public virtual List GetList() { return CurrentDb.GetList(); } /// /// 获取所有list-异步 /// /// public virtual async Task> GetListAsync() { return await CurrentDb.GetListAsync(); } /// /// 根据lambda查询 /// /// /// public virtual List GetList(Expression> whereExpression) { return CurrentDb.GetList(whereExpression); } /// /// 根据lambda查询-异步 /// /// /// public virtual async Task> GetListAsync(Expression> whereExpression) { return await CurrentDb.GetListAsync(whereExpression); } /// /// 根据lambda表达式获取数量 /// /// /// public virtual int Count(Expression> whereExpression) { return CurrentDb.Count(whereExpression); } /// /// 根据lambda表达式获取数量-异步 /// /// /// public virtual async Task CountAsync(Expression> whereExpression) { return await CurrentDb.CountAsync(whereExpression); } /// /// 获取分页 /// /// /// /// public virtual PageList GetPageList(Expression> whereExpression, PageModel page) { PageList list = new PageList(); list.List = CurrentDb.GetPageList(whereExpression, page); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual PageList

GetPageList

(Expression> whereExpression, PageModel page) { var result = CurrentDb.GetPageList(whereExpression, page); var pageData = new PageList

{ TotalCount = page.TotalCount, PageIndex = page.PageIndex, PageSize = page.PageSize, List = result.ToDTOList

() }; return pageData; } ///

/// 获取分页-异步 /// /// /// /// public virtual async Task> GetPageListAsync(Expression> whereExpression, PageModel page) { PageList list = new PageList(); list.List = await CurrentDb.GetPageListAsync(whereExpression, page); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual async Task> GetPageListAsync

(Expression> whereExpression, PageModel page) { var result = await CurrentDb.GetPageListAsync(whereExpression, page); var pageData = new PageList

{ TotalCount = page.TotalCount, PageIndex = page.PageIndex, PageSize = page.PageSize, List = result.ToDTOList

() }; return pageData; } public virtual PageList GetPageList(Expression> whereExpression, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) { PageList list = new PageList(); list.List = CurrentDb.GetPageList(whereExpression, page, orderByExpression, orderByType); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual async Task> GetPageListAsync(Expression> whereExpression, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) { PageList list = new PageList(); list.List = await CurrentDb.GetPageListAsync(whereExpression, page, orderByExpression, orderByType); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual PageList

GetPageList

(Expression> whereExpression, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) { var result = CurrentDb.GetPageList(whereExpression, page, orderByExpression, orderByType); var pageData = new PageList

{ TotalCount = page.TotalCount, PageIndex = page.PageIndex, PageSize = page.PageSize, List = result.ToDTOList

() }; return pageData; } public virtual async Task> GetPageListAsync

(Expression> whereExpression, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) { var result = await CurrentDb.GetPageListAsync(whereExpression, page, orderByExpression, orderByType); var pageData = new PageList

{ TotalCount = page.TotalCount, PageIndex = page.PageIndex, PageSize = page.PageSize, List = result.ToDTOList

() }; return pageData; } public virtual PageList GetPageList(List conditionalList, PageModel page) { PageList list = new PageList(); list.List = CurrentDb.GetPageList(conditionalList, page); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual async Task> GetPageListAsync(List conditionalList, PageModel page) { PageList list = new PageList(); list.List = await CurrentDb.GetPageListAsync(conditionalList, page); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual PageList GetPageList(List conditionalList, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) { PageList list = new PageList(); list.List = CurrentDb.GetPageList(conditionalList, page, orderByExpression, orderByType); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } public virtual async Task> GetPageListAsync(List conditionalList, PageModel page, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc) { PageList list = new PageList(); list.List = await CurrentDb.GetPageListAsync(conditionalList, page, orderByExpression, orderByType); list.PageIndex = page.PageIndex; list.PageSize = page.PageSize; list.TotalCount = page.TotalCount; return list; } ///

/// 根据id获取实体 /// /// /// public virtual T GetById(dynamic id) { return CurrentDb.GetById(id); } /// /// 根据id获取实体-异步 /// /// /// public virtual async Task GetByIdAsync(dynamic id) { return await CurrentDb.GetByIdAsync(id); } /// /// 根据lambda获取单个对象 (注意,需要确保唯一,如果获取到2个会报错,这种场景需要使用GetFirst) /// /// /// public virtual T GetSingle(Expression> whereExpression) { return CurrentDb.GetSingle(whereExpression); //Db.Queryable().First(whereExpression); } /// /// 根据lambda获取单个对象-异步 (注意,需要确保唯一,如果获取到2个会报错,这种场景需要使用GetFirst) /// /// /// public virtual async Task GetSingleAsync(Expression> whereExpression) { return await CurrentDb.GetSingleAsync(whereExpression); //await Db.Queryable().FirstAsync(whereExpression); } /// /// 根据lambda获取单个对象 /// /// /// public virtual T GetFirst(Expression> whereExpression) { return GetDB().Queryable().First(whereExpression); } /// /// 根据lambda获取单个对象 --异步 /// /// /// public virtual async Task GetFirstAsync(Expression> whereExpression) { return await GetDB().Queryable().FirstAsync(whereExpression); } /// /// 实体插入 /// /// /// public virtual bool Insert(T obj) { return CurrentDb.Insert(obj); } /// /// 实体插入-异步 /// /// /// public virtual async Task InsertAsync(T obj) { return await CurrentDb.InsertAsync(obj); } /// /// 批量插入 /// /// /// public virtual bool InsertRange(List objs) { return CurrentDb.InsertRange(objs); } /// /// 批量插入-异步 /// /// /// public virtual async Task InsertRangeAsync(List objs) { return await CurrentDb.InsertRangeAsync(objs); } /// /// 插入返回自增列 /// /// /// public virtual int InsertReturnIdentity(T obj) { return CurrentDb.InsertReturnIdentity(obj); } /// /// 插入返回自增列-异步 /// /// /// public virtual async Task InsertReturnIdentityAsync(T obj) { return await CurrentDb.InsertReturnIdentityAsync(obj); } /// /// 插入返回longid /// /// /// public virtual long InsertReturnBigIdentity(T obj) { return CurrentDb.InsertReturnBigIdentity(obj); } /// /// 插入返回longid-异步 /// /// /// public virtual async Task InsertReturnBigIdentityAsync(T obj) { return await CurrentDb.InsertReturnBigIdentityAsync(obj); } /// /// 批量删除 /// /// /// public virtual bool DeleteByIds(dynamic[] ids) { return CurrentDb.DeleteByIds(ids); } /// /// 批量删除-异步 /// /// /// public virtual async Task DeleteByIdsAsync(dynamic[] ids) { return await CurrentDb.DeleteByIdsAsync(ids); } /// /// 根据主键删除 /// /// /// public virtual bool Delete(dynamic id) { return CurrentDb.DeleteById(id); } /// /// 根据主键删除-异步 /// /// /// public virtual async Task DeleteAsync(dynamic id) { return await CurrentDb.DeleteByIdAsync(id); } /// /// 根据实体删除 /// /// /// public virtual bool Delete(T obj) { return CurrentDb.Delete(obj); } /// /// 根据实体删除-异步 /// /// /// public virtual async Task DeleteAsync(T obj) { return await CurrentDb.DeleteAsync(obj); } /// /// 根据表达式删除 /// /// /// public virtual bool Delete(Expression> whereExpression) { return CurrentDb.Delete(whereExpression); } /// /// 根据表达式删除-异步 /// /// /// public virtual async Task DeleteAsync(Expression> whereExpression) { return await CurrentDb.DeleteAsync(whereExpression); } /// /// 更新 /// /// /// public virtual bool Update(T obj) { return CurrentDb.Update(obj); } /// /// 更新-异步 /// /// /// public virtual async Task UpdateAsync(T obj) { return await CurrentDb.UpdateAsync(obj); } /// /// 批量更新 /// /// /// public virtual bool UpdateRange(List objs) { return CurrentDb.UpdateRange(objs); } /// /// 批量更新-异步 /// /// /// public virtual async Task UpdateRangeAsync(List objs) { return await CurrentDb.UpdateRangeAsync(objs); } /// /// 是否包含元素 /// /// /// public virtual bool IsAny(Expression> whereExpression) { return CurrentDb.IsAny(whereExpression); } /// /// 是否包含元素-异步 /// /// /// public virtual async Task IsAnyAsync(Expression> whereExpression) { return await CurrentDb.IsAnyAsync(whereExpression); } #endregion 通用方法 } }