Dapper的使用总结
趁这两天有时间总结下之前接触的一些技术。
很早几个项目用国的ORM框架是IBatisNet,说实话这个玩意接触的不是特别深,第一感觉是不习惯,很麻烦。
后来接触了Dapper发现真的是好用啊,可能也是习惯了面向数据库编程吧。
===============================================================
首先介绍一下Dapper这款轻量级的ORM框架比较官方一些的东西。
Dapper官网:https://code.google.com/p/dapper-dot-net/
有兴趣的童鞋可以自己搭梯子去外网看看。
关于dapper的一些优点:
1.Dapper的速度非常快,据了解查询速度能排在第二,不过这图也不知道是哪年的了,时效性不敢保证
2.Dapper用起来相当方便,语法十分简单。并且无须迁就数据库的设计。
3.Dapper支持多数据库,其本质据查是因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,一旦你这样做了,我们也知道,
SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection又是实现了IDBConnection的接口。
反正具体我也没有深究,从别的地方拷过来的。
4.Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。
5.Dapper支持net2.0,3.0,3.5,4.0。
=======================================================
接下来就是一些简单的Dapper使用方法了。
首先肯定是要引用Dapper,这个在NuGet上搜一下自动就安装好了。
安装完成以后我们假设数据库里有一张表叫User,里边存放着UserName,UserId,UserEmail三个字段。
建立一个类叫User
public class User { public string UserName{ get; set; } public Int UserId{ get; set; } public string UserEmail{ get; set; } }
获取User表里的数据
public List<User> GetUsers(){ using (IDbConnection conn = SqlDapper.GetConnection()) { List<User> entity = conn.Query<Pro_Tbm_Info>(strSql, new { Line_Id = lineId }).ToList(); } return entity == null ? new List<User>() : entity; }
好了,这就是一个简单的从数据库里读取数据的流程。
看起来比较简单,不过需要注意的是:User类的数据类型要和数据库里的数据类型保持一致
在读取或者插入的时候一定要注意数据类型是否对应,否则会有可能报错。
======================================================
在查询多条数据的时候则使用QueryMultiple方法,具体部分演示代码如下:
using (IDbConnection conn = SqlDapper.GetConnection()) { var multiple = conn.QueryMultiple(strSql, new { search = "%" + search + "%" }); list = multiple.Read<Pro_Tbm_Info>().ToList(); //count = multiple.ReadSingle<int>(); var total = multiple.ReadSingle(); count = total.count; var leijiGzl = total.LeijiGzl; if (list.Count > 0) { list[0].LeijiGzl = leijiGzl; } }
目前还没仔细研究
multiple.ReadSingle()
这个方法,下次有空再深入看看吧。
- 点赞
- 收藏
- 关注作者
评论(0)