MeiRiYiCheng_1_old/Nirvana.Data/Respository/IRepository.cs

129 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; }
}
}