You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
13 KiB
371 lines
13 KiB
using jiajie.Model;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace jiajie.Repository
|
|
{
|
|
public interface IBaseRepository<TEntity> where TEntity : class
|
|
{
|
|
/// <summary>
|
|
/// SqlsugarClient实体
|
|
/// </summary>
|
|
ISqlSugarClient Db { get; }
|
|
|
|
/// <summary>
|
|
/// 实体集合
|
|
/// </summary>
|
|
ISugarQueryable<TEntity> Entities { get; }
|
|
|
|
/// <summary>
|
|
/// 原生 Ado 对象
|
|
/// </summary>
|
|
IAdo Ado { get; }
|
|
|
|
IBaseRepository<NewEntity> ChangeRepository<NewEntity>() where NewEntity : class, new();
|
|
|
|
/// <summary>
|
|
/// 获取总数
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<int> CountAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
/// <summary>
|
|
/// 检查是否存在
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<bool> AnyAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
/// <summary>
|
|
/// 获取一个实体
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<TEntity> SingleAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
/// <summary>
|
|
/// 获取一个实体
|
|
/// </summary>
|
|
/// <param name="objId"></param>
|
|
/// <returns></returns>
|
|
Task<TEntity> SingleByIdAsync(object objId);
|
|
|
|
/// <summary>
|
|
/// 获取一个实体
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<TEntity> FirstOrDefaultAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
/// <summary>
|
|
/// 获取一个实体 主键
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<TEntity> FirstOrDefaultByIdAsync(object id);
|
|
|
|
/// <summary>
|
|
/// 检查存在
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<bool> IsExistsByIdAsync(object id);
|
|
|
|
/// <summary>
|
|
/// 检查存在
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<bool> IsExistsAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
|
|
/// <summary>
|
|
/// 新增一条记录
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
Task<int> InsertAsync(TEntity entity);
|
|
|
|
/// <summary>
|
|
/// 新增多条记录
|
|
/// </summary>
|
|
/// <param name="entities"></param>
|
|
/// <returns></returns>
|
|
Task<int> InsertAsync(params TEntity[] entities);
|
|
|
|
/// <summary>
|
|
/// 新增多条记录
|
|
/// </summary>
|
|
/// <param name="entities"></param>
|
|
/// <returns></returns>
|
|
Task<int> InsertAsync(IEnumerable<TEntity> entities);
|
|
|
|
/// <summary>
|
|
/// 新增一条记录返回自增Id
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
Task<long> InsertReturnIdentityAsync(TEntity entity);
|
|
|
|
/// <summary>
|
|
/// 更新一条记录
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
Task<bool> UpdateAsync(TEntity entity);
|
|
|
|
/// <summary>
|
|
/// 无主键更新一条记录
|
|
/// </summary>
|
|
/// <param name="entity">更新的实体</param>
|
|
/// <param name="columns">根据那些字段更新</param>
|
|
/// <returns></returns>
|
|
Task<bool> UpdateNoPrimaryKeyAsync(TEntity entity, Expression<Func<TEntity, object>> columns);
|
|
|
|
/// <summary>
|
|
/// 无主键更新多条记录
|
|
/// </summary>
|
|
/// <param name="entity">更新的实体</param>
|
|
/// <param name="columns">根据那些字段更新</param>
|
|
/// <returns></returns>
|
|
Task<bool> UpdateNoPrimaryKeyAsync(List<TEntity> entitys, Expression<Func<TEntity, object>> columns);
|
|
|
|
/// <summary>
|
|
/// 更新多条记录
|
|
/// </summary>
|
|
/// <param name="entities"></param>
|
|
/// <returns></returns>
|
|
Task<bool> UpdateAsync(params TEntity[] entities);
|
|
|
|
/// <summary>
|
|
/// 更新多条记录
|
|
/// </summary>
|
|
/// <param name="entities"></param>
|
|
/// <returns></returns>
|
|
Task<bool> UpdateAsync(IEnumerable<TEntity> entities);
|
|
|
|
/// <summary>
|
|
/// 删除一条记录
|
|
/// </summary>
|
|
/// <param name="entity"></param>
|
|
/// <returns></returns>
|
|
Task<bool> DeleteAsync(TEntity entity);
|
|
|
|
/// <summary>
|
|
/// 删除一条记录
|
|
/// </summary>
|
|
/// <param name="key"></param>
|
|
/// <returns></returns>
|
|
Task<bool> DeleteAsync(object key);
|
|
|
|
/// <summary>
|
|
/// 删除多条记录
|
|
/// </summary>
|
|
/// <param name="keys"></param>
|
|
/// <returns></returns>
|
|
Task<bool> DeleteAsync(params object[] keys);
|
|
|
|
/// <summary>
|
|
/// 自定义条件删除记录
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<bool> DeleteAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 通过主键查询
|
|
/// </summary>
|
|
/// <param name="lstIds"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryByIDsAsync(object[] lstIds);
|
|
|
|
/// <summary>
|
|
/// 获取列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync();
|
|
|
|
/// <summary>
|
|
/// 获取列表
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> whereExpression);
|
|
|
|
/// <summary>
|
|
/// 获取列表 带排序
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <param name="orderByFields"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
|
|
|
|
/// <summary>
|
|
/// 获取列表 带排序
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <param name="orderByExpression"></param>
|
|
/// <param name="orderByType"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression = null, OrderByType orderByType = OrderByType.Asc);
|
|
|
|
/// <summary>
|
|
/// 查询数据列表 带条件
|
|
/// </summary>
|
|
/// <param name="where">条件</param>
|
|
/// <returns>数据列表</returns>
|
|
Task<List<TEntity>> QueryAsync(string where);
|
|
|
|
/// <summary>
|
|
/// 查询数据列表 带条件 带排序
|
|
/// </summary>
|
|
/// <param name="where"></param>
|
|
/// <param name="orderByFields"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync(string where, string orderByFields);
|
|
|
|
/// <summary>
|
|
/// 查询数据列表 返回指定列
|
|
/// </summary>
|
|
/// <typeparam name="TResult"></typeparam>
|
|
/// <param name="expression"></param>
|
|
/// <returns></returns>
|
|
Task<List<TResult>> QueryAsync<TResult>(Expression<Func<TEntity, TResult>> expression);
|
|
|
|
/// <summary>
|
|
/// 查询数据列表 返回指定列 带条件 带排序
|
|
/// </summary>
|
|
/// <typeparam name="TResult"></typeparam>
|
|
/// <param name="expression"></param>
|
|
/// <param name="whereExpression"></param>
|
|
/// <param name="orderByFields"></param>
|
|
/// <returns></returns>
|
|
Task<List<TResult>> QueryAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
|
|
|
|
/// <summary>
|
|
/// 根据sql语句查询
|
|
/// </summary>
|
|
/// <param name="sql">完整的sql语句</param>
|
|
/// <param name="parameters">参数</param>
|
|
/// <returns>泛型集合</returns>
|
|
Task<List<TEntity>> QuerySqlAsync(string sql, SugarParameter[] parameters = null);
|
|
|
|
/// <summary>
|
|
/// 分页查询数据列表
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <param name="pageIndex"></param>
|
|
/// <param name="pageSize"></param>
|
|
/// <param name="orderByFields"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync(
|
|
Expression<Func<TEntity, bool>> whereExpression,
|
|
int pageIndex,
|
|
int pageSize,
|
|
string orderByFields);
|
|
|
|
/// <summary>
|
|
/// 分页查询数据列表
|
|
/// </summary>
|
|
/// <param name="where"></param>
|
|
/// <param name="pageIndex"></param>
|
|
/// <param name="pageSize"></param>
|
|
/// <param name="orderByFields"></param>
|
|
/// <returns></returns>
|
|
Task<List<TEntity>> QueryAsync(
|
|
string where,
|
|
int pageIndex,
|
|
int pageSize,
|
|
string orderByFields);
|
|
|
|
/// <summary>
|
|
/// 分页查询数据列表
|
|
/// </summary>
|
|
/// <param name="whereExpression"></param>
|
|
/// <param name="pageIndex"></param>
|
|
/// <param name="pageSize"></param>
|
|
/// <param name="orderByFields"></param>
|
|
/// <returns></returns>
|
|
Task<PageModel<TEntity>> QueryPageAsync(
|
|
Expression<Func<TEntity, bool>> whereExpression,
|
|
int pageIndex = 1,
|
|
int pageSize = 20,
|
|
string orderByFields = null
|
|
);
|
|
|
|
/// <summary>
|
|
///查询-多表查询
|
|
/// </summary>
|
|
/// <typeparam name="T">实体1</typeparam>
|
|
/// <typeparam name="T2">实体2</typeparam>
|
|
/// <typeparam name="T3">实体3</typeparam>
|
|
/// <typeparam name="TResult">返回对象</typeparam>
|
|
/// <param name="joinExpression">关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo}</param>
|
|
/// <param name="selectExpression">返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo}</param>
|
|
/// <param name="whereLambda">查询表达式 (w1, w2) =>w1.UserNo == "")</param>
|
|
/// <returns>值</returns>
|
|
Task<List<TResult>> QueryMuch<T, T2, T3, TResult>(
|
|
Expression<Func<T, T2, T3, object[]>> joinExpression,
|
|
Expression<Func<T, T2, T3, TResult>> selectExpression,
|
|
Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new();
|
|
|
|
/// <summary>
|
|
/// 两表联合查询-分页
|
|
/// </summary>
|
|
/// <typeparam name="T">实体1</typeparam>
|
|
/// <typeparam name="T2">实体1</typeparam>
|
|
/// <typeparam name="TResult">返回对象</typeparam>
|
|
/// <param name="joinExpression">关联表达式</param>
|
|
/// <param name="selectExpression">返回表达式</param>
|
|
/// <param name="whereExpression">查询表达式</param>
|
|
/// <param name="pageIndex">页码</param>
|
|
/// <param name="pageSize">页大小</param>
|
|
/// <param name="orderByFields">排序字段</param>
|
|
/// <returns></returns>
|
|
Task<PageModel<TResult>> QueryTabsPage<T, T2, TResult>(
|
|
Expression<Func<T, T2, object[]>> joinExpression,
|
|
Expression<Func<T, T2, TResult>> selectExpression,
|
|
Expression<Func<TResult, bool>> whereExpression,
|
|
int pageIndex = 1,
|
|
int pageSize = 20,
|
|
string orderByFields = null);
|
|
|
|
|
|
/// <summary>
|
|
/// 两表联合查询-分页-分组
|
|
/// </summary>
|
|
/// <typeparam name="T">实体1</typeparam>
|
|
/// <typeparam name="T2">实体1</typeparam>
|
|
/// <typeparam name="TResult">返回对象</typeparam>
|
|
/// <param name="joinExpression">关联表达式</param>
|
|
/// <param name="selectExpression">返回表达式</param>
|
|
/// <param name="whereExpression">查询表达式</param>
|
|
/// <param name="groupExpression">group表达式</param>
|
|
/// <param name="pageIndex">页码</param>
|
|
/// <param name="pageSize">页大小</param>
|
|
/// <param name="orderByFields">排序字段</param>
|
|
/// <returns></returns>
|
|
Task<PageModel<TResult>> QueryTabsPage<T, T2, TResult>(
|
|
Expression<Func<T, T2, object[]>> joinExpression,
|
|
Expression<Func<T, T2, TResult>> selectExpression,
|
|
Expression<Func<TResult, bool>> whereExpression,
|
|
Expression<Func<T, object>> groupExpression,
|
|
int pageIndex = 1,
|
|
int pageSize = 20,
|
|
string orderByFields = null);
|
|
|
|
}
|
|
}
|