Dapper是一款轻量级ORM工具(Github)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。
Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快。 使用ORM的好处是增、删、改很快,不用自己写sql,因为这都是重复技术含量低的工作,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。这些ORM都可以轻松给你搞定。ORM给我们开发带来便利时,性能也是一个让我们不得不考虑的问题。一般的ORM性能和直接写原生的sql比都差不少,但是Dapper性能还很错,甚至和DbHelperSQL方式性能高出很多。
为什么选择Dapper
- 轻量。只有一个文件(SqlMapper.cs)
- 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
- 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server
- 可以映射一对一,一对多,多对多等多种关系。
- 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。
- 支持FrameWork2.0,3.0,3.5,4.0,4.5
先简单的了解一下Dapper的用法入门
Dapper的单条添加
public ActionResult SaveAdd(string name) { try { using (IDbConnection conn = new SqlConnection(ConnString)) { var a = conn.Execute($"insert into pm values('{name}')"); if (a > 0) { return Content("<script>alert('成功')</script>"); } else { return Content("<script>alert('失败')</script>"); } } } catch (Exception e) { throw e; } }
Dapper的普通显示
public ActionResult Show() { try { using (IDbConnection conn = new SqlConnection(ConnString)) { var list = conn.Query<Models.PM>("select * from pm").ToList(); return View(list); } } catch (Exception e) { throw e; } }
下一章讲Dapper的一些复杂操作