ASP .Net Core 使用 Dapper 轻型ORM框架

ASP .Net Core 使用 Dapper 轻型ORM框架

【快速入门ORM框架之Dapper】大牛勿进系列

Dapper的好处:

1:轻量:早期的Dapper只有一个类文件
2:稳定、高效:接近Ado.net的读写速度
3:支持多种数据库:SQL Server, Oracle, MySQL,Sqlite
4:  跨平台:支持net Core

 

看了好多,先做个笔记吧

 这个就好像是和之前用的写数据库的SqlConnectioin链接字符串,然后增删改成的那一套,增加的是去执行的时候加入对象,便于去Dapper去映射

 

Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。

也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。给出官方地址。

http://code.google.com/p/dapper-dot-net/

Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法,编译后就40K的一个很小的dll。主要特性为:

  1. 使用Dapper可以自动进行对象映射
  2. 轻量级,单文件。
  3. 支持多数据库。
  4. Dapper原理通过Emit反射IDataReader(数据读取器)的序列队列,来快速的得到和产生对象。
  5. 由于Dapper ORM的操作实际上是对IDbConnection类的扩展,所有的方法都是该类的扩展方法。所以在使用前先实例化一个IDBConnection对象 
  6. Dapper支持net2.0,3.0,3.5,4.0。
  7. Dapper语法十分简单。并且无须迁就数据库的设计。

首先是通过NuGet 安装下Dapper这个组建,然后再声名下IDbconnection 这个接口,这样一来这两者就关联起来了。

IDbConnection conn = new SqlConnection(connString);
Book book = new Book();
 book.Name="C#本质论";
 string query = "INSERT INTO Book(Name)VALUES(@name)";
//第一种对对对象操作  对对象进行操作
 conn.Execute(query, book);//是不是因为他是有自动进行对象映射的功能,然后就要加个对象类型
//第二种是都name 进行操作直接赋值操作
 conn.Execute(query, new {name = "C#本质论"});

 Update 

string query = "UPDATE Book SET  Name=@name WHERE id =@id";
conn.Execute(query, book);//这个就是对对象进行操作
//也可以对字段进行操作
conn.Excute(query,new {name='zxxx',id='45'})

 delete

string query = "DELETE FROM Book WHERE id = @id";
conn.Execute(query, book);// 这个是传过来的一个book的对象,book对象就包含id,这样就去映射到这个对象的id 从而进行删除
conn.Execute(query, new { id = id });

 query

string query = "SELECT * FROM Book";
//无参数查询,返回列表,带参数查询和之前的参数赋值法相同。
 conn.Query<Book>(query).ToList();

 //返回单条信息
 string query = "SELECT * FROM Book WHERE id = @id";
 book = conn.Query<Book>(query, new { id = id }).SingleOrDefault();  

 事物

using (conn)
{
//开始事务
IDbTransaction transaction = conn.BeginTransaction();
  try
  {
    string query = "DELETE FROM Book WHERE id = @id";
    string query2 = "DELETE FROM BookReview WHERE BookId = @BookId";
    conn.Execute(query2, new { BookId = id }, transaction, null, null);
    conn.Execute(query, new { id = id }, transaction, null, null);
    //提交事务
    transaction.Commit();
  }
  catch (Exception ex)
  {
    //出现异常,事务Rollback
    transaction.Rollback();
    throw new Exception(ex.Message);
  }
}

  

posted @ 2019-12-05 09:49  ProZkb  阅读(4080)  评论(0编辑  收藏  举报