当前位置: 首页 > news >正文

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

一、摘要

为什么取名叫《葵花宝典》?

从行走江湖的世界角度来讲您可以理解为一本"武功秘籍",站在我们IT编程的世界角度应该叫"开发宝典"。

如果您在工作中主要接触的是操作MySQL数据库,但您又想学习和了解.NET轻量级ORM框架Dapper,那么就请跟着阿笨一起学习本次的分享课《.NET轻量级ORM框架Dapper葵花宝典》。Let's Go,Do It ,Dapper For MySQL!

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


 

二、课程适合人群范围

问:Dapper修炼手册和Dapper葵花宝典这两个课程我该如何选择?

答:结合自身需求,选择合适就好。

2.1《.NET轻量级ORM框架Dapper修炼手册》适合人群如下:

1、我是一个新手,主要工作面向的是MS SQL Server数据库,那么选择修炼手册一定没错。

2、对Dapper从没有过了解或者了解不全面的同学,想通过学习进一步提升对Dapper的认识。

3、迫切想提高下ADO.NET实战技术以及Transact-SQL的编写能力。

4、详细关于Dapper修炼手册可以去之前阿笨公布的公开课中查看课程介绍说明。

2.2、《.NET轻量级ORM框架Dapper葵花宝典》适合人群如下:

1、我是一个新手,主要工作面向的是MySQL数据库,那么选择葵花宝典一定没错。

 

2、在Dapper修炼手册的基础上新增一个Dapper扩展库Dapper.SimpleCRUD。

3、如何运用Dapper操作Mysql数据库以及Dapper如何支持多数据库。

4、学习Dapper在实际项目常用的几种开发架构模式。(简单三层架构模式、工厂模式、Repository架构模式)

5、本次新增Dapper如何操作处理事务以及优雅的方式使用事务。(强烈推荐)

三、环境准备工作

3.1、mysql for windows数据库安装。

3.2、mysql图形化管理工具介绍和使用。

3.3、mysql监控工具安装和基本使用。

3.4、SqlServer测试数据库转换为Mysql数据库。

1)、使用mss2sql工具将SqlServer转换为Mysql。

2)、Navicat for MySQL 数据导入向导功能。(强烈推荐)

备注:数据导入完成后,一定记得需要重新设置建立自增长列、索引字段以及设置字段的数据类型。

3.5、T4模板引擎基本介绍和简单使用。

四、涉及覆盖的知识点

1、.NET程序员对MySQL数据库的基本认识和理解以及使用。

2、如何通过使用.NET轻量级ORM框架Dapper操作MySQL数据库。

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

4、VS单元测试NuitTest运用。

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

6、原生Dapper简单的CRUD(增删改查) 葵花宝典。(强烈推荐)

7、Dapper扩展库Dapper.SimpleCRUD的基本使用。(强烈推荐)

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

9、Dapper扩展库Dapper.SqlBuilder、UniqueNamespace.SqlBuilder葵花宝典。(强烈推荐)

10、原生Dapper高级技巧葵花宝典。(强烈推荐)

11、Dapper扩展库Dapper-Extensions葵花宝典。(强烈推荐)

4.1、原生Dapper简单的CRUD(增删改查)

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

Update、Delete、Exist。

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

GetListReturnDynamic(返回dynamic)。

GetListByMultiQuery(返回多结果集Tuple)。

ExecuteWithDBTransaction(本地DbTransaction事务操作)。

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

4.2、Dapper扩展库Dapper.SimpleCRUD的基本使用

Insert、Delete、Exist、Insert_Batch

GetById、GetList

GetListPaged(获取分页数据,通过Dapper.SimpleCRUD自带的RecordCount、GetListPaged函数分别获取总记录数和分页数据。)

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

Insert、GetListByGenreIdAndName领略DynamicParameters的风采。

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

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

通过SqlBuilder构造CRUD语句模板。

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

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

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

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

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

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

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

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

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

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

2、Update、Delete、Exist。

3、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函数)。

六、小结

1、在ADO.NET的世界里"手册"和"宝典"在手,畅行无阻,横行天下。

2、希望学完此本葵花宝典后,您将会汲取到满满的干货,让您更加的有底气!这样阿笨也会感到一丝丝的欣慰。

3、最后阿笨的愿景:力争通过这两次关于Dapper的分享课后,做到目前.NET方面关于Dapper最全面的教程。为.NET的崛起阿笨做一点绵薄之力吧!

4、问:怎样高效的学习《Dapper修炼手册》和《Dapper葵花宝典》?

答:阿笨给出的建议是,您下载源码后需要针对每一个测试用例进行调试和学习,这样您才能了解和熟练的使用Dapper。


相关文章:

  • load-on-startup
  • 谈谈程序猿解决这个问题的能力
  • lintcode-200 最长回文字串
  • OpenGL ES3 非常好的系列文章
  • miaov-React 最佳入门
  • Next.js之基础概念(二)
  • 日志详解
  • High-Level Streams DSL(翻译)
  • seo优化中不容忽视的页面优化
  • predis连接redis sentinel和redis cluster
  • 4.NIO的非阻塞式网络通信
  • 远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
  • 从Code Review 谈如何做技术(zz)酷 壳
  • 大白话讲Zookeeper能做什么?(一):命名服务与配置管理
  • 大数据拼精准 可否触动电商个性营销神经
  • CODING 缺陷管理功能正式开始公测
  • Computed property XXX was assigned to but it has no setter
  • Node项目之评分系统(二)- 数据库设计
  • PHP那些事儿
  • SQL 难点解决:记录的引用
  • Vue ES6 Jade Scss Webpack Gulp
  • windows下mongoDB的环境配置
  • windows下如何用phpstorm同步测试服务器
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 订阅Forge Viewer所有的事件
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 小程序测试方案初探
  • MPAndroidChart 教程:Y轴 YAxis
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1) caustics\
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (三) diretfbrc详解
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)memcache、redis缓存
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Not - Empty-Null-Blank
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • []C/C++读取串口接收到的数据程序
  • [20190401]关于semtimedop函数调用.txt
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android 数据通信] android cmwap接入点
  • [BZOJ3757] 苹果树
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [CTO札记]如何测试用户接受度?
  • [HCTF 2018]WarmUp (代码审计)
  • [hdu1561] The more, The Better 【树形DP】
  • [jobdu]不用加减乘除做加法