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。主要特性为:
- 使用Dapper可以自动进行对象映射!
- 轻量级,单文件。
- 支持多数据库。
- Dapper原理通过Emit反射IDataReader(数据读取器)的序列队列,来快速的得到和产生对象。
- 由于Dapper ORM的操作实际上是对IDbConnection类的扩展,所有的方法都是该类的扩展方法。所以在使用前先实例化一个IDBConnection对象
- Dapper支持net2.0,3.0,3.5,4.0。
- 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); } }
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。