Dapper学习笔记

529 阅读2分钟
原文链接: mp.weixin.qq.com

一、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<School> schools = new List<School>()    {      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="斯坦福大学"}    });}