一、摘要

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. Nessus+Metasploit

    1.环境 受害者IP:10.0.0.6 2.攻击 首先使用Nessus进行扫描 扫描结果 我们将结果导出来,然后导入msfconsole中 使用vulns进行漏洞分析 查找对应的漏洞 使用漏洞进行攻击 ...

  2. 记录自己对EventLoop和性能问题处理的一点心得【转】

    转自:http://www.cnblogs.com/lanyuliuyun/p/4483384.html 1.EventLoop 这里说的EventLoop不是指某一个具体的库或是框架,而是指一种程序 ...

  3. centos6.8安装mysql5.6【转】

    首先先要去看看本机有没有默认的mysql, 本地默认有的,我们应先卸载,在安装新的这个逻辑. rpm -qa | grep mysql 我本机默认安装的mysql5.1.73 下一步删除 rpm -e ...

  4. 安装.NET Framework返回1603错误的解决办法

    昨天正在忙其它事情,实然同事向我反馈TFS上的文档无法浏览查看.第一反映是他的机器环境问题,让他试了下其它项目的文档也无法查看,后来在我电脑上也尝试了一下,果然无法查看项目文档,看来是TFS出了问题. ...

  5. 一个无锁消息队列引发的血案(三)——地:q3.h 与 RingBuffer

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  6. 使用crontab命令添加计划任务

    Ubuntu 16.04, 计划任务 就是 有(时间)计划地执行(做)任务,有计划 包括 定时执行(在哪些时间点执行任务).按照周期执行(每隔多少时间执行任务). 那么,什么是任务呢?就是 自己想要干 ...

  7. css-position属性实例2

    position 1) fixed 固定在页面某个位置 2) absolute 也可以固定在某个位置,一般结合relative使用 注: 1)fixed和absoulue区别,假如一个div固定在右下 ...

  8. Java中static关键字概述

    例如一个学生类中,我们需要统计下学生类中学生对象的数量,此时数量要定义为静态变量: 示例代码: package com.java1995; public class Student { int id= ...

  9. Vue.Js的用户体验优化

    一次基于Vue.Js的用户体验优化   一.写在前面 半年以前,第一次在项目上实践VueJs,由于在那之前,没有Angular,avalon等框架的实践经验,所以在Vue的使用上,没有给自己总结出更多 ...

  10. bzoj 1151: [CTSC2007]动物园zoo

    思路:因为每个人最多只能看到五个动物,我们考虑将其状压,f[ i ][ s ] 表示到了第 i 个位置, i, i + 1, i + 2, i + 3, i + 4这四个动物的状态为s, 此时的最大值 ...