第一篇: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的记录,如下:

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" });


        }

 

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

 

3.update操作

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

  

 

4. delete操作

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

 

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

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

相关文章

  • Net下无敌的Micro ORM — Dapper

  • .NET Core 使用Dapper 操作MySQL

  • Dapper、Entity Framework 和混合应用

原文地址:http://www.cnblogs.com/huangxincheng/p/5828470.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/328592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置spring、SpringMVC,mybatis进行整合

springframwork的官网 spring-projects/spring-mvc-showcase https://github.com/spring-projects/spring-mvc-showcase spring-projects/greenhouse https://github.com/spring-projects/greenhouse spring-projects/spring-boot spring-boot https://github.com/sprin…

对应node版本_安装Node.js教程

小编首先下载Node.js,首先打开浏览器&#xff0c;然后输入https://nodejs.org/en/&#xff0c;进入nodejs官网&#xff0c;然后按照下图中红色箭头指示步骤2&#xff0c;这个是nodejs8.12版本&#xff0c;下面Recommended For Most Users,这个就是推荐大家使用的版本&#xff0…

Asp.net Core 使用MyCat分布式数据库,实现读写分离

简介   MyCat2.0版本很快就发布了&#xff0c;关于MyCat的动态和一些问题&#xff0c;大家可以加一下MyCat的官方QQ群&#xff1a;106088787。我们今天主要介绍一下&#xff0c;在我们的Asp.net Core中如何使用Mycat&#xff0c;这源于一个大神&#xff08;Amamiya Yuuko&…

如何在MyEclipse中显示行数

转载自 如何在MyEclipse中显示行数如何在MyEclipse中显示行数呢&#xff1f;myeclipse在默认情况下不显示行数时&#xff0c;用户可以自己设置显示行数&#xff0c;行数可以帮助我们方便的查看代码。首先&#xff0c;打开windows菜单然后选择preference&#xff0c;进入首选项…

logback日志配置

直接复制讲一下好了 比较简单 logback 可以看到执行的sql了 mybatis执行的sql了 <?xml version"1.0" encoding"UTF-8"?> <configuration scan"true" scanPeriod"60 seconds" debug"false"><!-- 打印日…

旅游系统_数字洛江智慧旅游系统助力提升旅游安全水平

长期以来&#xff0c;景区客流监测工作都是个“老大难”问题。为进一步提升旅游安全监管水平&#xff0c;今年洛江区将该项工作列入民办实事项目&#xff0c;投入96万元&#xff0c;大力推进智慧旅游项目建设。日前&#xff0c;洛江区智慧旅游系统正式上线运行&#xff0c;该智…

如何在 ASP.NET MVC 中集成 AngularJS

介绍 当涉及到计算机软件的开发时&#xff0c;我想运用所有的最新技术。例如&#xff0c;前端使用最新的 JavaScript 技术&#xff0c;服务器端使用最新的基于 REST 的 Web API 服务。另外&#xff0c;还有最新的数据库技术、最新的设计模式和技术。 当选择最新的软件技术时&am…

ftp相关配置

ftp # 图片上传的会再讲的 #ftp的相关配置 #ftp.server.ip你的FTP服务器ip地址 ftp.server.ip127.0.0.1 ftp.usermmallftp ftp.passftppassword #ftp.server.http.prefixhttp://img.happymmall.com/.ftp.server.http.prefixftp://mmallftp:ftppassword127.0.0.1:21/img/ #ftp.…

MyEclipse web项目导入Eclipse,详细说明

转载自 MyEclipse web项目导入Eclipse&#xff0c;详细说明最近导入一个MyEclipse的项目&#xff0c;具体是&#xff1a;spring4.1的web项目&#xff0c;同时遇到了一些问题&#xff0c;总结一下。 1、进入项目目录&#xff0c;找到.project文件&#xff0c;打开。 增加一个&…

matlab盒子分形维数_分形:盒子维数

今天主要想说的是&#xff0c;分形中的差分盒子维数的原理&#xff0c;基于分形的基础概念就不在这里说啦.分形维数可以用于定量描述图像表面的空间复杂程度&#xff0c;能够定量的表现图像的纹理特征. 采用不同的维数进行纹理特征描述时&#xff0c;精度有所区别&#xff0c;我…

Eclipse中看不到jsp的页面效果

转载自 Eclipse中看不到jsp的页面效果eclipse打开jsp后&#xff0c;在文件下面部分应该有”design"视图的&#xff0c;你点击一下看看。还是没有的话&#xff0c;在JSP文件上点点右键,"open with"选"webpage editor"&#xff0c;然后下面应该有“des…

唤醒幻数据包禁用会怎么样_如何利用splashtop实现远程开机、远程唤醒电脑

Splashtop商业版和个人版提供了局域网唤醒计算机(WoL)功能&#xff0c;您可以按照下面的指引进行设置。首先&#xff0c;请确保完全满足以下三个条件&#xff0c;否则&#xff0c;远程唤醒无法工作。计算机 BIOS支持WoL并且该选项已启用。Windows或Mac计算机的操作系统中已正确…

第二篇:Dapper中的一些复杂操作和inner join应该注意的坑

上一篇博文中我们快速的介绍了dapper的一些基本CURD操作&#xff0c;也是我们manipulate db不可或缺的最小单元&#xff0c;这一篇我们介绍下相对复杂 一点的操作&#xff0c;源码分析暂时就不在这里介绍了。 一&#xff1a;table sql 为了方便&#xff0c;这里我们生成两个表…

eclipse安装、使用hibernate插件方法

转载自 eclipse安装、使用hibernate插件方法hibernate插件安装方法&#xff1a; http://download.jboss.org/jbosside/updates/stable 点击eclipse的help菜单里的“Install New Software”点击“Add”&#xff0c;输入下面的内容&#xff0c;一路“NEXT”即可 hibernate更新网…

编译内核_将驱动编译进内核(Kernel)的步骤记录

1、首先在/kernel/drivers下建立驱动文件&#xff1b;以建立hello文件为例2、在hello文件下创建.c/Makefile/Kconfig三个文件3、.c文件存放驱动程序&#xff1b;Makefile存放编译的方法&#xff1b;Kconfig存放编译的配置4、Makefile格式例如&#xff1a;“ obj-$(CONFIG_HELLO…

项目的提交

git status git add . git status git commit -am project init -a是提交 m是message放后面 git push git branch 完成了代码提交

Visual Studio “15”的第四个预览版发布

在Visual Studio “15”&#xff08;VS15&#xff09;首批披露的细节中&#xff0c;其中一个是围绕着VS15的安装过程。VS在年复一年地添加着各种功能&#xff0c;这导致占用了更多磁盘空间&#xff0c;并且安装需要更长时间。Microsoft为缩短开发人员的VS15软件安装时间&#x…

Eclipse 内置浏览器

转载自 Eclipse 内置浏览器Web 浏览器Eclipse 系统内部自带了浏览器&#xff0c;该浏览器可以通过点击 Window 菜单并选择 Show View > Other&#xff0c;在弹出来的对话框的搜索栏中输入 "browser"。在树形菜单中选择 "Internal Web Browser" 并点击…

gpu超算算法_超算安装GPU-based软件 (以pytorch为例)

一般的超算的拓扑结构是若干个登陆节点若干个交换机大量计算CPU节点大量GPU计算节点一个(或若干个)存储节点管理节点。其中存储节点的共享存储可以被所有节点访问。一般运作方式是&#xff0c;如果我的计算依赖非常共性的软件&#xff0c;我可以找超算管理员安装&#xff0c;使…