Dapper封装实现仓储Repository
仓储模式作为领域驱动设计(Domain-Driven Design,DDD)的一部分,在系统设计中的使用非常广泛。它主要用于解除业务逻辑层与数据访问层之间的耦合,使业务逻辑层在存储、访问数据库时无须关心数据的来源及存储方式,例如使用哪种类型的数据库,也无须关心对数据的操作,如数据库连接和命令等。所有这些直接对数据的操作均封装在具体的仓储实现中。本篇博客是主要介绍我封装个案例,如果想要学习对Dapp
什么是仓储?
仓储模式作为领域驱动设计(Domain-Driven Design,DDD)的一部分,在系统设计中的使用非常广泛。它主要用于解除业务逻辑层与数据访问层之间的耦合,使业务逻辑层在存储、访问数据库时无须关心数据的来源及存储方式,例如使用哪种类型的数据库,也无须关心对数据的操作,如数据库连接和命令等。所有这些直接对数据的操作均封装在具体的仓储实现中。
前言:
本篇博客是主要介绍我封装个案例,如果想要学习对Dapper基本操作的话,请看其他博客!
gitee源码地址: DapperRepository: Dapper封装仓储Repository
封装的这个demo十分简化,方便入门,没有类库,直接用文件夹分类了。
结构结构如下:
一、配置数据库连接和Redis
二、封装仓储层
IRepositoryBase<T>定义了仓储的一些基本的增删查改的操作。<T>就是通过泛型传递参数,忘记回去补
<T> T是要传过来的领域模型(实体类)
RepositoryBase<T> 仓储实现 IRepositoryBase<T>定义的方法。
IUserRepository 这个接口顾名思义就是将要操作的领域模型(实体类)userinfo传递给IRepositoryBase<T>,并基础这个接口,让UserRepository能使用仓储的方法,IUserRepository 这里可以写一些复杂的扩展方法。
UserRepository 基础了RepositoryBase<userinfo>,和实现IuserRepository接口里面的扩展方法,这里一定要继承RepositoryBase<userinfo>方法,如果不继承的话,RepositoryBase<T>
里面实现的仓储方法就没有一样了,在 UserRepository 还要重新实现。
- 然后就可以直接在Service里面使用仓储了。
- 这里注意要将仓储的接口在依赖注入,要不然会报错。
-
builder.Services.AddTransient<IUserRepository, UserRepository>();
- 然后就可以使用仓储里面的方法了。
总结:我这里案例是最基本的实现,方便初学者入门仓储,如果又不对的地方欢迎评论区交流。
更多推荐
所有评论(0)