一、摘要

1.1、为什么叫本次的分享课叫《修炼手册》?

阿笨希望本次的分享课中涉及覆盖的一些小技巧、小技能给您带来一些帮助。希望您在日后工作中把它作为一本实际技能手册进行储备,以备不时之需,一旦当手头遇到与Dapper修炼手册中相似用法的地方和场景,可以直接拿来进行翻阅并灵活的运用到项目中。最后阿笨建议您可以根据自己在工作中碰到的不同的使用场景,不断的完善此本修炼手册。

废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

 

四、涉及覆盖的知识点

1、C# Linq To Xml技术。

2、Transact-SQL修炼手册。比如如何使用临时表、创建用户自定义表(TABLE)、XML数据字段、ROW_NUMBER分页函数、存储过程修炼手册(动态执行SQL、异常处理机制、事务处理机制)、C#如何获取存储过程的OUTPUT、RETURN参数值。

3、SQL Sever FOR XML技术(XML PATH、XML RAW、XML AUTO简单用法介绍)。

4、Transact-SQL关键字OPENXML操作内存中的 XML 文档。

5、Faker.Net仿照测试数据框架运用。

6、VS单元测试NuitTest运用。

7、Dapper在异步编程(Asyn Task)中的运用。

8、原生Dapper简单的CRUD(增删改查) 修炼手册。(强烈推荐)

9、Dapper如何通过DynamicParameters动态拼接查询SQL修炼手册。(强烈推荐)

10、Dapper扩展库Dapper.SqlBuilder、UniqueNamespace.SqlBuilder修炼手册。(强烈推荐)

11、原生Dapper高级技巧修炼手册。(强烈推荐)

12、Dapper扩展库Dapper-Extensions修炼手册。(强烈推荐)

五、Dapper修炼手册在线学习和演示

5.1、原生Dapper简单的CRUD(增删改查) 修炼手册

Insert、Insert_Batch(批量插入数据)。

Update、Delete、Exist。

GetById、GetList、GetByIds(in子句使用)。

GetListReturnDynamic(返回dynamic)。

GetListByMultiQuery(返回多结果集Tuple)。

ExecuteWithDBTransaction(本地DbTransaction事务操作)。

ExecuteWithTransactionScope(分布式TransactionScope事务操作)。

5.2、Dapper如何通过DynamicParameters动态拼接查询SQL修炼手册

Insert、GetListByGenreIdAndName领略DynamicParameters的风采。

SearchOrdersByPageDynamicParametersSqlBuild:获取分页数据(通过DynamicParameters动态拼接查询SQL方式拼接+ ROW_NUMBER() OVER 子句分页)。

SearchOrdersByDynamicParametersOutPutANDReturnVaule:如何使用DynamicParameters构造和获取存储过程OUTPUT、RETURN参数值,以及获取存储过程返回一个或多个结果集。

5.3、Dapper扩展库Dapper.SqlBuilder修炼手册

通过SqlBuilder构造CRUD语句模板。

通过SqlBuilder内置的模板构造SELECT(查询)、Page(分页)语句模板。

GetOrderOneToManyByDapperSqlBuilder:获取订单"一对多"通过SQL语法 XML PATH子句。

SearchOrdersByPageDapperSqlBuilder:获取分页数据(通过Dapper.SqlBuilder拼接+ ROW_NUMBER() OVER 子句分页)。

SearchOrdersByDapperDapperSqlBuilderSqlPagingTemplates获取分页数据(通过Dapper.SqlBuilder内置提供的分页模板进行分页)。

5.4、原生Dapper高级技巧修炼手册

CreateOrder:创建订单(采用sql拼接+for循环方式)。

CreateOrderByStoredProcedures_XMLPath:创建订单(采用生成XML+SQL XML数据类型的XMLPath方式)。

CreateOrderByStoredProcedures_OpenXml:创建订单(采用生成XML+SQL XML数据类型的OpenXml方式)。

CreateOrderByStoredProcedures_CustomTableType:创建订单(采用SQL用户创建自定义表类型)。

GetOrderOneToManyBySqlBuilder:获取订单(一对多)通过主从表SQL语句方式。

GetOrderOneToManyByDapperQuery:获取订单(一对多)通过原生Dapper Query+splitOn关键字。

SearchOrdersByPageSqlBuild:获取分页数据(通过SQL语句拼接+ ROW_NUMBER() OVER 子句分页)。

SearchOrdersByPageSqlStoredProcedures:获取分页数据(通过SQL分页存储过程+ ROW_NUMBER() OVER 子句分页)。

5.5、Dapper扩展库Dapper-Extensions修炼手册

1、Insert、Insert_Batch(批量插入数据)。

2、Update、Delete、Exist。

3、Insert_BatchBySqlBulkCopy(基于SqlBulkCopy方法进行批量插入数据)。

4、GetList:包含如下知识点:

*根据条件进行查询(带过滤条件和排序字段)。

*根据多组合条件进行查询(通过IPredicate的Predicates.Group()生成过滤条件+排序字段)。

*根据多组合条件进行查询(通过IPredicate.Add()生成过滤条件+排序字段)。

*根据多组合条件进行查询(通过Predicate多条件复合谓词组合生成过滤条件+排序字段,示例SQL语句:Select * From Table Where(id1=@id1 AND name2=@name2) OR (id2=@id2 AND name2=@name2)。

*根据单条件进行子查询查询(通过IPredicate.EXISTS()子查询过滤条件语句+排序字段,示例语句:Select * Form Table Where       Exists(Select 1 From Table Where id=@id))。

*根据多组合条件进行子查询查询(通过IPredicate.EXISTS()子查询过滤条件语句+排序字段,示例语句:Select * From Table Where Exists(Select Count(1) From Table Where(id1=@id1 AND name2=@name2) OR (id2=@id2 AND name2=@name2)))。

*SearchOrdersByPageDapperExtensions:获取分页数据(通过提供的扩展DapperExtensions多条件组合复合谓词IPredicate+内置的Count、Page函数)。

六、小结

在ADO.NET的世界里“海阔凭鱼跃,天高任鸟飞”。

Transact-SQL编程能力再上一个台阶。

领略到了Dapper她的“美”!

学完此本修炼手册后,您将会汲取到满满的干货,让您更加的有底气!

后续计划:阿笨将后续计划给大家带来另外一堂分享课《.NET轻量级ORM组件Dapper实战宝典》,大概包含Dapper For MSQL,Dapper For Mysql、Dapper For Oracle、数据访问层之Repository模式以及基于Dapper开源的仓储模式项目运用,等等。


.NET轻量级ORM组件Dapper修炼手册的更多相关文章

  1. .NET轻量级ORM组件Dapper葵花宝典

    一.摘要 为什么取名叫<葵花宝典>? 从行走江湖的世界角度来讲您可以理解为一本"武功秘籍",站在我们IT编程的世界角度应该叫"开发宝典". 如果您在 ...

  2. .NET轻量级ORM框架Dapper入门精通

    一.课程介绍 本次分享课程包含两个部分<.NET轻量级ORM框架Dapper修炼手册>和<.NET轻量级ORM框架Dapper葵花宝典>,阿笨将带领大家一起领略轻量级ORM框架 ...

  3. 轻量级ORM框架Dapper应用一:Dapper安装

    一.Dapper简介 Dapper是一款轻量级ORM框架,为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果你在项目中遇到性能访问问题,选择Dapp ...

  4. .NET 轻量级 ORM 框架 - Dapper 介绍

    Dapper简单介绍: Dapper is a single file you can drop in to your project that will extend your IDbConnect ...

  5. 基于轻量级ORM框架Dapper的扩展说明

    这里简单的介绍一下本人基于Dapper作的一些简单的扩展,供大家参考. 为何要使用这款框架,相信大家看到下面排名就清楚了 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco ...

  6. 轻量级ORM框架Dapper应用八:使用Dapper实现DTO

    一.什么是DTO 先来看看百度百科的解释: 数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统.数据传输目标往往是数据访问对象从数据库中检索数 ...

  7. 轻量级ORM框架Dapper应用六:Dapper支持存储过程

    在Entity Framework中讲解了EF如何支持存储过程,同样,Dapper也支持存储过程,只需要在Query()方法的CommandType中标记使用的是存储过程就可以了.在Users表上面创 ...

  8. 轻量级ORM框架Dapper应用五:使用Dapper实现Join操作

    在这篇文章中,讲解如何使用Dapper使用Inner join的操作 1.新创建两张表:Users表和Product表 Users表定义如下: CREATE TABLE [dbo].[Users]( ...

  9. 轻量级ORM框架Dapper应用四:使用Dapper返回多个结果集

    使用Dapper的QueryMultiple方法可以一次执行多条SQL语句,返回多个结果集,代码如下 using System; using System.Collections.Generic; u ...

随机推荐

  1. thinkphp5学习总结!

    数据库操作之原生sql操作 <?php namespace app\index\controller; use think\Db; class Index { public function i ...

  2. 基于ZedBoard的Webcam设计(一):USB摄像头(V4L2接口)的图片采集【转】

    转自:http://www.cnblogs.com/surpassal/archive/2012/12/19/zed_webcam_lab1.html 一直想把USB摄像头接到Zedboard上,搭建 ...

  3. HTML播放FLASH(SWF)神器-SWFObject

    环境 必须有 swfobject.js和 expressInstall.swf js:  http://pan.baidu.com/share/link?shareid=2536087943& ...

  4. appium无ID、name定位处理【转】

    1.关于没有name,没有ID的元素的定位---通用篇解题思路:因为没有name,id:其实剩下的选择已不多,要么xpath,要么className.xpath木有好印象(稳定性不高,加之1.0x后需 ...

  5. laravel 5.1 Model 属性详解

    <?php namespace Illuminate\Database\Eloquent; /** * 下面提到某些词的含义: * 1.覆盖: 在继承该类 \Illuminate\Databas ...

  6. 关于Ocelot 网关结合Consul实现服务转发的坑爹问题

    下面是我的网关配置来验证下Ocelot的问题,如果只是做网关转发应该还ok,但是要是结合Consul来检查并健康的转发有效服务器还是有很多弊端 关键在于通过设置 DeregisterCriticalS ...

  7. hdu 1272 判断所给的图是不是生成树 (并查集)

    判断所给的图是不是生成树,如果有环就不是,如果没环但连通分量大于1也不是 find函数 用递归写的话 会无限栈溢出 Orz要加上那一串 手动扩栈 Sample Input6 8 5 3 5 2 6 4 ...

  8. TypeScript的HTML5游戏

    wildfirecode 自动化的基于TypeScript的HTML5游戏开发 自动化的开发流程 在HTML5游戏开发或者说在Web客户端开发中,对项目代码进行修改之后,一般来说,需要手动刷新浏览器来 ...

  9. js字符串驼峰和下划线互相转换

    // 下划线转换驼峰 function toHump(name) { return name.replace(/\_(\w)/g, function(all, letter){ return lett ...

  10. 002.VNC配置部署

    一 安装图形界面 在系统中安装相关图形界面 yum -y install xorg* yum -y install gnome* yum -y install glx*   或者 yum groupi ...