Dapper源码讲解

Nuget下载dapper的程序集,浏览公开的方法,如下图所示

主要讲解:Execute方法的调用过程,

public static int Execute(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null)

此方法代码:

内部调用了ExecuteImpl方法

上图,数字修正为数组

下面讲解ExecuteCommand方法

上面的代码中一共出现两个类Identity(标识),CacheInfo(缓存信息)

先说Identity这个类,是用来对CommandText,CommandType,cnn,param的一个封装,用于唯一标识这些对象。为缓存机制,提供一个唯一标识。

identity = new Identity(command.CommandText, command.CommandType, cnn, null, param.GetType(), null);

那么我们再来看这个类CacheInfo,用identity,param,bool参数来构造。

info = GetCacheInfo(identity, param, command.AddToCache);

下面看它的构造函数:

我们接下来,查看步骤3中的圈着的方法,是用来生成一个无返回值的委托,参数是ICommand和object

时间: 2024-10-01 06:29:06

Dapper源码讲解的相关文章

cocos2D-X源码讲解之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构

 个人原创,欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man 从本篇文章开始,将分析cocos2D-X 3.0源代码,第一部分是从cocos2D-X学习OpenGL,也就是分析cocos2D-X 3.0的渲染代码,本篇首先介绍cocos2D-X 3.0的渲染结构,使用的是3.0正式版. void DisplayLinkDirector::mainLoop() { if (_purgeDirectorInNextLoop) { //只有一种情况会调用到这里来,

源码讲解ActionBar的各种用法

1. Navigation Drawer 许多应用程序都使用了Navigation Drawer,如网易邮箱客户端.该控件位于 android.support.v4.widget.DrawerLayout ,用法如下,点击下载源码: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/draw

深入Redis内部-Redis 源码讲解(转)

Redis作为 NoSQL 数据库的杰出代表,一直广受关注,其轻量级的敏捷架构,向来有存储中的瑞士军刀之称.下面推荐的一篇文章,从源码的角度讲解了Redis 的整个工作流程,是了解 Redis 流程的绝佳文章.英文的,想搞懂还是要花些时间的 原文链接:Redis: under the hood 目录: Startup Beginning global server state initialization Setting up command table Loading config file

游戏源码讲解

新建立了一个QQ群,用来讲解一些知名网络游戏源码,如游戏架构.网络通信.配置读写.逻辑管理.UI管理等,适合对游戏开发感兴趣的在校学生.刚从业的新手,玩服的勿加. 手游:暗黑战神.龙骑战歌 端游:江山美人(2.5D 回合制MMORPG) QQ:773495257 QQ群:557660018 付费加入:500RMB/人

Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表

一个个人觉得比较简单小巧的软件. 下面就如何编写如何发布打包来介绍一下吧! 先下载mysql的库文件链接:http://files.cnblogs.com/files/xiaobo-Linux/mysql.zip 把两个文件放入 Qt目录\Qt5.5.0\5.5\mingw492_32\bin文件夹下直接粘贴(路径根据自己的设置) 也可以放到原来工程代码中,头文件用双引号引出即可. <!--小波Linux QQ463431476 cnblogs http://www.cnblogs.com/xi

laravel5源码讲解整理

来源:http://yuez.me/laravel-yuan-ma-jie-du/?utm_source=tuicool&utm_medium=referral 目录 入口文件 index.php Illuminate\Foundation\Application 类 注入所有基础 Service Provider 入口文件 index.php 一个基于Laravel的应用,当WEB服务器接受到来自外部的请求后,会将这个这个请求解析到 应用根目录的 public/index.php 中. Lar

源码讲解PyQt5的文本框与网格布局

网格布局其中的每一个按钮对应到一个网格,其实我们的窗口部件可以占据多个网格,我们可以据此做一个类似文本输入的窗口.下面我们就用源码来学习PyQt的文本框与网格布局. 先上源代码: import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QTextEdit, QLineEdit class exp(QWidget): def __init__(self): super().__init__(

java里面的FutureTask简单使用(配合源码讲解)

最近无意间看到了关于AsyncTask的一篇分析文章AsyncTask源码分析,记得很早之前还看过郭神博客里面分析了AsyncTask源码.去查看AsyncTask源码会发现里面使用了FutureTask在它自己的构造函数里面,我的sdk是android-23里面查看的. /** * Creates a new asynchronous task. This constructor must be invoked on the UI thread. */ public AsyncTask() {

jdk1.8 HashMap源码讲解

1. 开篇名义 jdk1.8中hashMap发生了一些改变,在之前的版本中hsahMap的组成是数组+链表的形式体现,而在1.8中则改为数组+链表+红黑树的形式实现,通过下面两张图来对比一下二者的不同.                   jdk1.8之前的hashMap结构图,基本对象为Entry<k,v>                               jdk1.8的hashMap结构图,基本对象改为了Node<k,v> 注意:无论Entry<key,valu