zoukankan      html  css  js  c++  java
  • Dapper学习笔记

    听说有个轻量化的orm Dapper,我就去了解下。试着对Sql Server和Mysql进行增删改查,体验不错。它不如EF臃肿,也比一般的封装灵活,比如我们封装了一个映射类。利用反射,在ExecuteReader过程中根据需要映射的类,把数值映射上去,我们的列表与一个实体是分别封装到不同方法,而Dapper的Query方法直接实现了封装到一个实体与一个列表,比较灵活。

    Dapper支持多数据库,连接Sql Server只需要用SqlConnection类连接,连接Mysql需要引用Mysql.Data,用MySqlConnection类连接。

    项目中使用Dapper方式很简单,选择Nuget管理包选项中的程序包管理器控制台,在控制台中输入Install-Package Dapper即可。

    Dapper的Insert、Update、Delete都是ExeCute方法,查询则是Query方法,以下文字是从其它文章中Copy过来的。

    2. Insert操作

      通常来说,有两种insert操作:

    <1>单条insert操作(update、delete同理)

      这是一个简单的参数化insert,而且还可以塞入匿名类型,对吧,跟原始的SqlParameter相比,是不是简单的多???

    static void Main(string[] args)
            {
                IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");
    
                var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",
                                       new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });
            }

    <2> InsertBulk操作

         既然是Bulk操作,那肯定就是批量插入了,我们要做的就是将上面这个 ”匿名对象" 变成 ”匿名对象集合“ 就可以了。。。为了方便操作,这里定义

    一个Users类,比如下面这样。。。

    static void Main(string[] args)
            {
                IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");
    
                //var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",
                //                       new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });
    
                var usersList = Enumerable.Range(0, 10).Select(i => new Users()
                {
                    Email = i + "qq.com",
                    Address = "安徽",
                    UserName = i + "jack"
                });
    
                var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",usersList);
            }

    2. Query操作

       其实在Dapper在query上提供的的文章太多了。。。这篇我们就按照最简单的参数化查询就好了。。。比如我要找到username=jack的记录,如下:

    static void Main(string[] args)
            {
                IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");
    
                var query = connection.Query<Users>("select * from Users where UserName=@UserName", new { UserName = "jack" });
    
            }
  • 相关阅读:
    【SSM电商项目后台开发】004-用户模块
    【SSM电商项目后台开发】003-项目架构概览
    C#面向对象编程「字段与属性」
    C#基本语法
    C#学习笔记-简介
    软件工程团队作业展示
    “消灭选择困难症”软件设计规格说明书
    “消灭选择困难APP”软件需求规格说明书
    消灭选择困难APP
    消灭选择困难
  • 原文地址:https://www.cnblogs.com/ssvip/p/10919410.html
Copyright © 2011-2022 走看看