当前位置:首页 > Web开发 > 正文

ASP.NET Core 2.2 系列【六】泛型仓储模式

2024-03-31 Web开发

为什么要使用泛型仓储?好处是?

前两章在autofac注入的时候,用的User类作为例子,写了增删改查四个接口,也就是仓储的GRUD。

当我们再添加一个实体(比如Student)时,StudentRepository跟UserRepository代码几乎一样的代码,重复量很大,为了减少冗余、提高工作效率,使用泛型仓储最好不过了

好处:

减少代码冗余

提高了开发人员的工作效率

提高对数据库访问的维护

一、泛型仓储接口和泛型仓储实现类 泛型仓储接口

在类库项目上右键->添加->新建文件夹,命名为Repository,存放泛型仓储接口及实现类。在Repository文件夹下面新建 泛型仓储接口类:IRepository,如下:

using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using NetCoreWebApi.Repository.Dto; namespace NetCoreWebApi.Repository.Repository { public interface IRepository<T> where T : class { /// <summary> /// 添加实体(单个) /// </summary> /// <param>实体对象</param> int Add(T entity); /// <summary> /// 批量插入实体(多个) /// </summary> /// <param>实体列表</param> int AddRange(List<T> list); /// <summary> /// 删除实体(单个) /// </summary> /// <param></param> int Remove(T entity); /// <summary> /// 批量删除实体(多个) /// </summary> /// <param>实体列表</param> int RemoveRange(List<T> list); /// <summary> /// 获取所有 /// </summary> /// <returns></returns> IQueryable<T> GetAll(); /// <summary> /// 分页条件查询 /// </summary> /// <typeparam>排序类型</typeparam> /// <param>当前页</param> /// <param>每页大小</param> /// <param>条件表达式</param> /// <param>是否升序排列</param> /// <param>排序表达式</param> /// <returns></returns> Page<T> SearchFor<TKey>(int pageIndex, int pageSize, Expression<Func<T, bool>> predicate, bool isAsc, Expression<Func<T, TKey>> keySelector); /// <summary> /// 获取实体(主键) /// </summary> /// <param>主键id</param> /// <returns></returns> T GetModelById(object id); /// <summary> /// 获取实体(条件) /// </summary> /// <param>条件表达式</param> /// <returns></returns> T GetModel(Expression<Func<T, bool>> predicate); /// <summary> /// 查询记录数 /// </summary> /// <param>条件表达式</param> /// <returns>记录数</returns> int Count(Expression<Func<T, bool>> predicate); /// <summary> /// 是否存在 /// </summary> /// <param>查询表达式</param> /// <returns>布尔值</returns> bool Exist(Expression<Func<T, bool>> anyLambda); } }

泛型仓储实现类

在Repository文件夹下面新建 泛型仓储实现类:Repository,并继承IRepository,,如下:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/42836.html