.NET轻量级ORM组件Dapper修炼手册
一、摘要
1.1、为什么叫本次的分享课叫《修炼手册》?
阿笨希望本次的分享课中涉及覆盖的一些小技巧、小技能给您带来一些帮助。希望您在日后工作中把它作为一本实际技能手册进行储备,以备不时之需,一旦当手头遇到与Dapper修炼手册中相似用法的地方和场景,可以直接拿来进行翻阅并灵活的运用到项目中。最后阿笨建议您可以根据自己在工作中碰到的不同的使用场景,不断的完善此本修炼手册。
废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。
![](http://upload-images.jianshu.io/upload_images/1676984-2656d3ad170cca18.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
四、涉及覆盖的知识点
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开源的仓储模式项目运用,等等。
相关文章
- MassTransit | .NET 分布式应用框架
- 【愚公系列】2022年10月 .NET CORE工具案例-DiffPlex文本差异组件
- .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
- 快钱报错:javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name解决详解编程语言
- 利用Oracle.Net实现数据库互联(oracle.net)
- 联手开发:.NET与Oracle的合作之路(.net和oracle)
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
- Oracle Database: The Ultimate Connection Guide for .NET Developers(net连接oracle)
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
- 数据使用NET改变Oracle数据库的奥秘(net修改oracle)
- Net调用MySQL技术实践(.net 调用mysql)
- 分类NET 5与MySQL分类新加坡开发者技术展望(.net 5 mysql)
- 在IIS中改变ASP.NET程序版本的实现方法附批处理代码
- asp.net(C#)把汉字转化成全拼音函数(全拼)
- asp.net处理原文件中过长的viewstate代码
- ASP.NET缓存分析和实践浅析提高运行效率
- ASP.NET缓存方法和最佳实践
- asp.net组件开发中的内嵌资源引用
- 深入Lumisoft.NET组件POP3邮件接收与删除操作的使用详解
- Asp.net第三方控件ComboBox组合框介绍
- asp.net错误:0x8007000B异常的解决方法