using Nirvana.Common; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; namespace Nirvana.Data { public interface IRepository where T : class { #region 单模型 CRUD 操作 /// /// 增加一条记录 /// /// 实体模型 /// object Add(T entity); /// /// 更新一条记录 /// /// 实体模型 /// bool Update(T entity); /// /// 通过Lamda表达式获取实体 /// /// Lamda表达式(p=>p.Id==Id) /// T GetModel(Expression> predicate); #endregion #region 多模型 操作 /// /// 增加多条记录,同一模型 /// /// 实体模型集合 /// bool AddList(List TModels); /// /// 更新多条记录,同一模型 /// /// 实体模型集合 /// bool UpdateList(List TModels); #endregion #region 删除操作 /// /// 通过Lamda表达式,删除一条或多条记录 /// /// /// bool Delete(Expression> predicate); #endregion #region 获取多条数据操作 /// /// Lamda返回IQueryable集合,延时加载数据 /// /// /// List GetListAsync(Expression> predicate); #endregion #region 验证是否存在 /// /// 验证当前条件是否存在相同项 /// bool IsExist(Expression> predicate); #endregion #region 分页操作 /// /// 对IQueryable对象进行分页逻辑处理,过滤、查询项、排序对IQueryable操作 /// /// 当前页码 /// 每页数量 /// 条件拉姆达表达式 /// true=正序 false=倒叙 /// 排序拉姆达表达式 /// PageData GetPageList(int pageIndex, int pageSize, Expression> whereLambda, params MutilOrderExpress[] orderBy); /// /// 对IQueryable对象进行分页逻辑处理,过滤、查询项、排序对IQueryable操作 /// /// 当前页码 /// 每页数量 /// sql拼接条件 /// sql排序自定义 /// PageData GetPageList(int pageIndex, int pageSize, string strwhere, string strorder); #endregion } public class MutilOrderExpress { public MutilOrderExpress(Expression> expression, OrderByType? orderby) { this.Expression = expression; this.OrderBy = orderby; } public Expression> Expression { get; set; } public OrderByType? OrderBy { get; set; } } }