MeiRiYiCheng_1_old/Nirvana.Data/Respository/IRepository.cs

129 lines
3.7 KiB
C#
Raw Normal View History

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