.NET轻量级ORM组件Dapper修炼手册
一、摘要
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修炼手册的更多相关文章
- .NET轻量级ORM组件Dapper葵花宝典
一.摘要 为什么取名叫<葵花宝典>? 从行走江湖的世界角度来讲您可以理解为一本"武功秘籍",站在我们IT编程的世界角度应该叫"开发宝典". 如果您在 ...
- .NET轻量级ORM框架Dapper入门精通
一.课程介绍 本次分享课程包含两个部分<.NET轻量级ORM框架Dapper修炼手册>和<.NET轻量级ORM框架Dapper葵花宝典>,阿笨将带领大家一起领略轻量级ORM框架 ...
- 轻量级ORM框架Dapper应用一:Dapper安装
一.Dapper简介 Dapper是一款轻量级ORM框架,为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果你在项目中遇到性能访问问题,选择Dapp ...
- .NET 轻量级 ORM 框架 - Dapper 介绍
Dapper简单介绍: Dapper is a single file you can drop in to your project that will extend your IDbConnect ...
- 基于轻量级ORM框架Dapper的扩展说明
这里简单的介绍一下本人基于Dapper作的一些简单的扩展,供大家参考. 为何要使用这款框架,相信大家看到下面排名就清楚了 其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco ...
- 轻量级ORM框架Dapper应用八:使用Dapper实现DTO
一.什么是DTO 先来看看百度百科的解释: 数据传输对象(DTO)(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统.数据传输目标往往是数据访问对象从数据库中检索数 ...
- 轻量级ORM框架Dapper应用六:Dapper支持存储过程
在Entity Framework中讲解了EF如何支持存储过程,同样,Dapper也支持存储过程,只需要在Query()方法的CommandType中标记使用的是存储过程就可以了.在Users表上面创 ...
- 轻量级ORM框架Dapper应用五:使用Dapper实现Join操作
在这篇文章中,讲解如何使用Dapper使用Inner join的操作 1.新创建两张表:Users表和Product表 Users表定义如下: CREATE TABLE [dbo].[Users]( ...
- 轻量级ORM框架Dapper应用四:使用Dapper返回多个结果集
使用Dapper的QueryMultiple方法可以一次执行多条SQL语句,返回多个结果集,代码如下 using System; using System.Collections.Generic; u ...
随机推荐
- linux笔记_day08
1.文件权限管理 1)chown:改变文件属主(只有管理员才能使用这个命令)(change owner) chown USERNAME file... -R :修改目录以及内部文件的属主 --refe ...
- H5开发APP考题和答案
{ "last_updated": { "$date": 1544276670569 }, "page_count": 1, "a ...
- 公共语言运行库(CLR)开发系列课程(1):Pinvoke 简介 学习笔记
前言 让拖管代码对象和非托管对象协同工作的过程称为互用性(Interoperability),通常简称为 Interop. P/Invoke在托管代码与非托管代码交互式时产生一个事务(Transiti ...
- 【题解】BZOJ 1901: Zju2112 Dynamic Rankings
题目传送门(权限题) 一道类似的非权限题 题意 N个数的序列,每次修改一个数或者询问区间里的第K小.可以离线. 简要做法 假如要求在线,可以树状数组套个线段树~ 但是这题是可以离线的,就可以乱搞整体二 ...
- 移动端HTML5开发 选择方案
如今出现了大量的CSS前端框架,但真正优秀的框架只有少数几个. 本文将会比较其中五个最佳的框架.每个框架都有自己的优点和缺点,以及具体的应用领域,你可以根据自己的具体项目需求进行选择.此外,许多选项都 ...
- Algorithm类介绍(core)
参考:http://blog.csdn.net/yang_xian521/article/details/7533922
- POJ 1948 Triangular Pastures
题意: 把很多单独的线段重新组合成一个三角形,使得三角形面积最大(所有的线段都必须用上). 思路: 三角形的任意一条边的边长不能超过周长的一半,只需要用dp枚举两条边j,k,剩下的一条边长为tot ...
- springcloud hystrix 部分参数整理
hystrix.command.default和hystrix.threadpool.default中的default为默认CommandKey Command Properties Executio ...
- 局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目(转)
局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目 1.在宿主机cmd中查看宿主机的ip(注意区分主机中虚拟机的ip) 我连的是无线,IP如下 2.在Django项目的mysit ...
- java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)
一.java ExecutorService实现 创建ExecutorService变量private ExecutorService executor = null 2.执行对应任务时,首先生成线程 ...