持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情
前言
今天我们来学习一下C#里面的Dapper,Dapper是一款轻量级ORM工具Dapper是一款轻量级ORM工具,ORM的意思是对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。,创作不易,点赞关注评论收藏,你的点赞是我创作的动力,也是我学习的方向。
Dapper概念学习
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。但是我们在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,就会觉得有点浪费,你又觉得ORM省时省力,这时Dapper 将是你的一个不错选择。 对象关系映射(ORM)已经被使用了很长时间,以解决在编程过程中对象模型与数据模型在关系数据库中不匹配的问题。 Dapper是由Stack OverFlow团队开发的开源的,轻量级的ORM.相比于其他的ORM框架,Dapper速度非常快。Dapper的设计考虑到了性能以及易用性。它支持使用事务,存储过程或数据批量插入的静态和动态对象绑定。这篇文章我们一起来学习一下关于Dapper的知识。
简单使用
在解决方案资源管理器中选中项目,右击项目选择“管理Nuget包...”,找到Dapper进行安装,成功之后就可以到下一步啦 在.NET中使用Dapper进行CRUD操作
现在让我们写一些代码,使用Dapper对数据库进行CRUD操作,首先创建一个名为“IDG”的数据库,它包含一个名为“Author”的表,表中包含以下字段:ID,FirstName,LastName。 然后我们需要创建一个实体类(POCO类),下面是与数据库IDG中Author表相对应的实体类Author:
public class Author
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
//Dapper中的扩展方法Query()能够让你从数据库中检索数据并填充到对象模型中。
//下面的方法是从Author表中检索所有记录,并存储到内存中,最后返回一个集合:
//注意需要在程序中包含Dapper命名空间,才能使用Dapper:
using Dapper;
public List<Author> ReadAll()
{
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString))
{
return db.Query<Author>
("Select * From Author").ToList();
}
}
//下面的方法演示了如何从Auhor表中检索特定的一条记录:
public Author Find(int id)
{
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString))
{
return db.Query<Author>("Select * From Author WHERE Id = @Id", new { id }).SingleOrDefault();
}
}
Dapper中的Execute()方法可以用于向数据库中插入,更新,删除数据。这个方法会返回一个整数,表示在执行查询时受到影响的行数。下面的方法演示了如何用Dapper更新一条记录:
public int Update(Author author)
{
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString))
{
string sqlQuery = "UPDATE Author SET FirstName = @FirstName, " +
" LastName = @LastName “ + “WHERE Id = @Id";
int rowsAffected = db.Execute(sqlQuery, author);
return rowsAffected;
}
}
正如以上代码所看到的,Update()方法返回受影响的行数,也就是已更新的记录数,在本例中只会更新一条记录,所以方法成功时将会返回1. 存储过程在Dapper中的使用:要使用Dapper处理存储过程,需在调用Query()或者Exectue()方法时显示地提到命令类型。下面的示例演示了如何使用Dapper来处理存储过程:
public List<Author> Read()
{
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AdventureWorks"].ConnectionString))
{
string readSp = "GetAllAuthors";
return db.Query<Author>(readSp, commandType: CommandType.StoredProcedure).ToList();
}
}
Dapper也支持事务,例如,如果需要我们可以使用事务操作,为此,你可以利用BeginTransaction() and EndTransaction()方法,就像通常在ADO.NET中处理事务一样,然后,您需要在BeginTransaction()和EndTransaction()方法调用中编写事务语句。Dapper非常轻且使用起来非常简单,它不会为你生成SQL,但是可以很容易地将查询结果映射到POCOs(普通的旧CLR对象).最重要的是,你可以获得比EntityFrameWork更快的执行速度,事实上,几乎和ADO.NET一样。
总结
这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!