Dapper相关了解
公司新项目用的是Dapper,做的时候没有具体看dapper的具体用法,现在回来回顾总结一下。
1-总体介绍dapper
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db。
Dapper是一个轻量级的ORM。之前最常用的ORM是EF,其实EF底层是Ado.net实现的。
现在基本上已经远离SqlHelper时代了。
Dapper支持多数据库。支持多数据库的本质是因为dapper是对IDBConnection接口进行了方法扩展。
SqlConnection,MysqlConnection,OracleConnection都是继承于DBConnection,而DBConnection实现了IDBConnection的接口

2-安装dapper
通过nuget包进行安装。或者登陆www.nuget.org 搜索dppaer


3.操作
引入 system.configuration 配置一下数据库链接字符串
ps:推荐一个网站 https://www.connectionstrings.com 数据库配置网站
查询
Query
Query方法是一种扩展方法,可以从IDbConnection类型的任何对象种调用。它可以执行查询并映射结果

示例 - 查询匿名
可以使用Query方法执行原始SQL查询,并将结果映射到动态列表。
示例 - 强类型查询
示例 - 一对一映射
将2张表的关系一对一的映射到强类型中
var sql = "select * from table1 a INNER JOIN table2 b on a.id=b.id";
var info = db.Query<Table1 , Table2 , Table1>(
sql,
(table1 , table2) =>
{
table1.column = table2;
return table1;
},
splitOn:"column";
)
splitOn是分割字段
Query的扩展方法
1 QueryFirst
2 QueryFirstOrDefault
3 QuerySingle
4 QuerySingleOrDefault

QueryFirst | QueryFirstOrDefault | QuerySingle | QuerySingleOrDefault 对比

QueryFirst
匿名对象及强类型对象
string sql = " select * from table1 where Id = @id";
var info = db.QueryFirst(sql , new { id = 1})
string sql = " select * from table1 where Id = @id";
var info = db.QueryFirst<Table1>(sql , new { id = 1})
QueryFirstOrDefault
执行查询并返回结果,若结果为空,则返回默认值,若返回多个结果,则默认结果,若是单个结果,则映射给匿名对象或强类型对象
string sql = " select * from table1 where Id = @id";
var info = db.QueryFirstOrDefault<Table1>(sql , new { id = 1})
QuerySingle
执行查询并返回结果,若结果为空或者返回多个结果,将抛出异常
string sql = " select * from table1 where Id = @id";
var info = db.QuerySingle<Table1>(sql , new { id = 1})
QuerySingleOrDefault
执行查询并返回结果,若结果为空或者返回多个结果,将抛出异常,反之映射给匿名对象或强类型对象
string sql = " select * from table1 where Id = @id";
var info = db.QuerySingleOrDefault<Table1>(sql , new { id = 1})
QueryMultiple
它可以在同一命令中执行多个查询并返回多个结果
string sql = " select * from table1 where Id = @id ; select * from table2 where Id = @id ; ";
var info = db.QueryMultiple(sql , new { id = 1})
var TableInfo1 = info.Read<Table1>();
var TableInfo2 = info.Read<Table2>();
Dapper允许您使用列表在IN子句上指定多个参数。
Dapper相关了解的更多相关文章
- 为EasySharding.EFCore提供Dapper相关查询扩展
承接上一篇博文中的中间件基本都是写入性的操作,但对于查询操作实际上是比较鸡肋的,如果单纯的查询,没有分表的情况下基本还能适应,这里为了Dapper提供了扩展 Dapper的扩展查询是需要写表名称的,所 ...
- 我的基于asp.net mvc5 +mysql+dapper+easyui 的Web开发框架(1)数据库访问(0)
一.数据库访问 概述 1. 数据库使用mysql,orm采用dapper框架.dapper框架应用简单,只是需要自己手写sql语句,但是对于像我这样写了多年sql语句的人来说,这应该不算问题,个人还是 ...
- 分布式追踪系统dapper
http://www.cnblogs.com/LBSer/p/3390852.html 最近单位需要做自己的分布式监控系统,因此看了一些资料,其中就有google的分布式追踪系统dapper的论文:h ...
- Dapper,大规模分布式系统的跟踪系统--转
原文地址:http://bigbully.github.io/Dapper-translation/ 概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模 ...
- Dapper,大规模分布式系统的跟踪系统
概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了几千台服务器 ...
- .NETCore Sqlserver下对Dapper的扩展支持
这里我们自定义一个IServiceCollection的扩展,例如下面我的扩展 services.AddDapperContext(dapperoptions => { dapperoption ...
- 【ORM】关于Dapper的一些常见用法
引言 Dapper是.Net平台下一款小巧玲珑的开源Orm框架,简单实用的同时保持高性能,非常适合我这种喜欢手写SQL的人使用,下面介绍一下如何使用Dapper. 相关资料 Dapper的GitHub ...
- 《Dapper》
最近看了google的分布式追踪系统dapper的论文:http://static.googleusercontent.com/external_content/untrusted_dlcp/rese ...
- 42岁大龄程序员的迷茫,看我最新尝鲜.net 5+Dapper搭建的WebAPI框架
42岁大龄程序员的迷茫 我真傻,真的.我单知道雪天是野兽在深山里没有食吃,会到村里来;我不知道春天也会有-- 我真傻,真的.我单知道程序员要活到老学到老,年龄大了要失业;我不知道码农(新型农民工)也会 ...
随机推荐
- oracle+110个常用函数
1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from du ...
- laravel的批量插入
在日常开发中,用到批量插入的操作还是挺多的.记得很早很早以前,我还是在循环中写sql插入,结果被项目经理按在地上摩擦.好吧,性能这东西,用不到的时候还好,万一性能成为瓶颈,那代码优化,数据库优化就首当 ...
- 如何隐藏掉Nginx的版本号
最近新学习了一个命令curl,里面有一个参数-I可以查看到网站使用的是哪种服务器,比如: zhangxiaoliudeMacBook-Pro-2:~ zhangxiaoliu$ curl -I htt ...
- CodeForces 620E:New Year Tree(dfs序+线段树)
E. New Year Treetime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputout ...
- JS:Window
ylbtech-JS:Window 1.返回顶部 1.happy.js ; (function () { var happyUi = { initHappy: function (type) { ut ...
- zedgraph控件的一些比较有用的属性
(1)zedgraph控件属性具体解释: AxisChange()() ->> This performs an axis change command on the graphPane. ...
- pa14-30条职场经验
可以说是很多本厚厚的职场经验书籍的精华部分,掌握了这30条可以说是天下无敌了,但真要掌握这30条经验可不是什么容易的事情,他们都是环环相 扣的,一条做不好可能有些能做好的项目就会落空,耐下性子,看看你 ...
- paramiko分开执行多条命令 不像之前一样使用\n
#!/usr/bin/env python#-*- encoding -*- import paramiko transport = paramiko.Transport(('192.168.11.1 ...
- 类型:。net;问题:HQL;结果:HQL: Hibernate查询语言
HQL: Hibernate查询语言 Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可 ...
- 【276】◀▶ Python 字符串函数说明
参考:Python 字符串函数 01 capitalize 把字符串的第一个字符大写,其他字母变小写. 02 center 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串. ...