Dapper的学习笔记

Scroll Down

8.png
一、Dapper是什么?

Dapper是一款开源的轻量级ORM工具,源代码下载地址为https://github.com/StackExchange/dapper-dot-net

二、Dapper的优点

1、轻量。

只有一个文件(SqlMapper.cs),编译完成之后只有120k(好象是变胖了)
2、速度快。

Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
3、支持多种数据库。

Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server可以映射一对一,一对多,多对多等多种关系。
4、性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。
支持FrameWork2.0,3.0,3.5,4.0,4.5等

三、安装Dapper

1、通过NuGet方式安装(推荐)

VS中执行 install-package Dapper进行安装引用

2、直接在GitHub下载源码

只要把Dapper文件夹拉出来然后复制到我们的项目中就可以了

四、Dapper简单用法

1、定义实体

class School
{
/*
若属性名和数据库字段不一致(不区分大小写)则查询不出数据,如果使用EF则可以通过Column特性
建立属性和数据表字段之间的映射关系,Dapper则不行
*/
//[Column("Name")]
public string Title { set; get; }
public string Address { set; get; }
}

class Student
{
public string Name { set; get; }
public string Number { set; get; }
public int SchoolId { set; get; }
}

2、基本用法

const string _connectionString = "Database=Dapper;Data Source=127.0.0.1;User Id=root;Password=root;pooling=false;CharSet=utf8;port=3306;";
using (IDbConnection dbConnection = new MySqlConnection(_connectionString))
{
dbConnection.Open();
//通过匿名类型插入单条数据
dbConnection.Execute("insert into t_schools(Name,Address) values(@Name,@Address)", new { Name = "西南大学", Address = "重庆市北碚区天生路2号" });
//批量插入数据
List schools = new List()
{
new School() {Address="China·BeiJing",Title="清华大学" },
new School() {Address="杭州",Title="浙江大学" },
new School() {Address="不知道,US?",Title="哈弗大学" }
};
//在执行参数化的SQL时,SQL中的参数(如@title可以和数据表中的字段不一致,但要和实体类型的属性Title相对应)
dbConnection.Execute("insert into t_schools(Address,Name) values(@address,@title);", schools);
//通过匿名类型批量插入数据
dbConnection.Execute("insert into t_schools(Address,Name) values(@address,@name)",
new[] {
new {Address="杨浦区四平路1239号",Name="同济大学"},
new {Address="英国",Name="剑桥"},
new {Address="美国·硅谷",Name="斯坦福大学"}
});
}
Dapper的学习笔记