Dapper介绍
Dapper是一款轻量级ORM工具(Github)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。
Dapper优点
- 轻量。只有一个文件(SqlMapper.cs),编译完成之后只有120k(好象是变胖了)
- 速度快。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.Net程序包,在解决方案中右键点开,选择管理NuGet程序包
在搜索框中输入dapper,选择Dapper dot net async 点击安装,安装完成以后,程序会自动引用Dapper
这些工作完成后,Dapper框架就可以使用了
Dapper使用Demo 增删改查
使用Dapper操作的实体类必须跟数据库的字段名对应
需要引入命名空间using Dapper;
SqlConnection连接字符串
string sqlconn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
新增
using (IDbConnection conn = new SqlConnection(sqlconn))
{
//新增
Student stu = new Student() { stuName = "王五", stuAge = 19, stuSex = "女" };
string strsql = @"insert into student (stuName,stuAge,stuSex) values (@stuName,@stuAge,@stuSex)";
int result= conn.Execute(strsql, stu);
if (result > 0)
Console.WriteLine("插入成功!");
else
Console.WriteLine("插入失败!");
}
修改
using (IDbConnection conn = new SqlConnection(sqlconn))
{
//修改
Student stu = new Student() { stuName = "李四", stuAge = 20, stuSex = "女", stuID = 1 };
string strsql = @"update student set stuName=@stuName,stuAge=@stuAge where stuID=@stuID";
int result= conn.Execute(strsql, stu);
if (result > 0)
Console.WriteLine("修改成功!");
else
Console.WriteLine("修改失败!");
}
删除
using (IDbConnection conn = new SqlConnection(sqlconn))
{
//删除
Student stu = new Student() { stuID = 1 };
string strsql = @"delete student where stuID=@stuID";
int result= conn.Execute(strsql, stu);
if (result > 0)
Console.WriteLine("删除成功!");
else
Console.WriteLine("删除失败!");
}
查询
using (IDbConnection conn = new SqlConnection(sqlconn))
{
//查询
string strsql = @"select * from Student";
List<Student> stuList = conn.Query<Student>(strsql).ToList();
stuList.ForEach((item) =>
{
Console.WriteLine("主键ID:" + item.stuID + " 姓名:" + item.stuName + " 年龄:" + item.stuAge + " 性别:" + item.stuSex);
});
}