zoukankan      html  css  js  c++  java
  • 轻量级ORM框架——第一篇:Dapper快速学习

      

      我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架

    叫做dapper,而且被称为the king of ORM。

    一:为什么选择Dapper

    1. 性能优越:

        其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所表现的性能,我们发现dapper是第二名,

    当然第一名谁也无法超越,越底层的当然久越快,同时也就越麻烦。就好像谁能超过“01代码”呢???

    2. 支持多数据库

          支持多数据库的本质是因为Dapper是对IDBConnection接口进行了方法扩展,比如你看到的SqlMapper.cs,一旦你这样做了,我们也知道,

    SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection又是实现了IDBConnection的接口,对吧。。。

    二:安装Dapper

        install dapper的方式通常有两种:

    1. 通过nuget进行安装

       如果你不知道怎么用nuget进行安装,或者不知道install-package是什么,可以在browser上找一下,比如下面这样:

    然后我们copy到package console 试试看。

    2. 在github上获取源码。

       为什么要获取源码,是因为用ilspy调试dapper的源码太费劲了,毕竟现在都是异步编程了,从ilspy中看都是匿名方法很多都无法渗透,废话不多

    说,我们只要把Dapper文件夹拉出来然后copy到我们的solution就可以了,如下图:

    三:快速CURD操作

       其实对数据库的操作莫过于CURD,在进行操作之前我们再配一个Users表。

    1. 配置Users表

    复制代码
    CREATE TABLE [dbo].[Users](
        [UserID] [int] IDENTITY(1,1) NOT NULL,
        [UserName] [varchar](50) NULL,
        [Email] [varchar](100) NULL,
        [Address] [varchar](100) NULL,
     CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
    (
        [UserID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    复制代码

    2. Insert操作

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

    <1>单条insert操作

      这是一个简单的参数化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的记录,如下:

    复制代码
    1         static void Main(string[] args)
    2         {
    3             IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DataMip;Integrated Security=True;MultipleActiveResultSets=True");
    4 
    5             var query = connection.Query<Users>("select * from Users where UserName=@UserName", new { UserName = "jack" });
    6 
    7         }
    复制代码

    图上的亮点就在于能够自动化mapper到我们object上面来,这是我们DataReader所不能办到的,对吧~~

    3.update操作

      这种操作方式,我们还是使用Execute方法来实现,和insert是一种套路的哦。

      

    4. delete操作

        这里我还是采用参数化的形式来删除UserID=10这条记录,方式如下:

    最终sql的table展示如下,可以看到已经正确的修改了UserID=11的记录,删除了UserID=10的record。。。。当然Dapper好玩的地方多着呢,

    这篇只是一个入门而已。。。希望本篇对大家有帮助~~~

    摘自:https://www.cnblogs.com/huangxincheng/p/5828470.html

  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/linybo/p/10052957.html
Copyright © 2011-2022 走看看