.net之ORM框架Dapper.net 之增删改查

来源:互联网 发布:软件测试表情包 编辑:程序博客网 时间:2024/05/21 22:47

Dapper介绍

Dapper是一款轻量级ORM工具(Github)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。

Dapper优点

  1. 轻量。只有一个文件(SqlMapper.cs),编译完成之后只有120k(好象是变胖了)
  2. 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
  3. 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server
  4. 可以映射一对一,一对多,多对多等多种关系。
  5. 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。
  6. 支持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);                });            }