Dapper简介
Dapper是.NET的一款轻量级ORM工具(GitHub),也可称为简单对象映射器。在速度方面拥有微型ORM之王的称号。 它是半自动的,也就是说实体类和SQL语句都要自己写,但它提供自动对象映射。是通过对IDbConnection接口的扩展来操作数据库的。
优点:
轻量,只有一个文件 性能高,Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server 使用Dapper可以自动进行对象映射,通过Emit反射IDataReader的序列队列,来快速的得到和产生对象
使用Dapper
下面简单创建一个Web API应用并通过Dapper访问MySQL数据。
创建MySQL测试数据
创建Web API应用并添加NuGet引用
Install-Package MySql.Data
Install-Package Dapper
新建一个Product类
新建一个DBConfig类用于创建并返回数据库连接
创建简单的仓储接口和类
在Startup ConfigureServices方法里面配置依赖注入
在Controller里面调用仓储方法
测试API是否可以正常工作 Dapper对存储过程和事务的支持 存储过程
事务
Dapper对多表映射的支持
使用Dapper Contrib或其他扩展
Dapper Contrib扩展Dapper提供了CRUD的方法
Get GetAll Insert Update Delete DeleteAll
添加NuGet引用Dapper.Contrib - Install-Package Dapper.Contrib
复制代码为Product类添加数据注解
增加一个新的仓储类继承
修改Startup ConfigureServices方法里面配置依赖注入 - services.AddTransient<IProductRepository, ContribProductRepository>();
复制代码测试,这样可以少写了不少基本的SQL语句。 其他一些开源的Dapper扩展
Dapper.SimpleCRUD | Get GetList GetListPaged Insert Update Delete DeleteList RecordCount | Dapper Plus | Bulk Insert Bulk Delete Bulk Update Bulk Merge Bulk Action Async Bulk Also Action Bulk Then Action | Dapper.FastCRUD | Get Find Insert Update BulkUpdate Delete BulkDelete Count | Dapper.Mapper | Multi-mapping |
引入工作单元Unit of Work
仓储模式往往需要工作单元模式的介入来负责一系列仓储对象的持久化,确保数据完整性。网上关于工作单元模式的实现方式有多种,但其本质都是工作单元类通过创建一个所有仓储共享的数据库上下文对象,来组织多个仓储对象。
网上的一些实现方式:
优缺点不作讨论,适合自己的就是最好的,这里采用了另外一种实现方式:
后面省略了很多代码,有兴趣通过阅读原文到博客上去阅读。
原文地址: https://www.cnblogs.com/royzshare/p/9522127.html
[code][/code]
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
来源:https://blog.csdn.net/sD7O95O/article/details/82010992 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |