首页
学习
活动
专区
圈层
工具
发布

为什么越来越多 C# 开发者转投 Dapper?从环境搭建与 CRUD 实战说起

换成 Dapper 手写 SQL,同样的查询 0.4 秒。从那之后,我手里所有对性能有要求的项目,数据访问层全是 Dapper。...联表查询 联表的坑在于 splitOn 参数。它告诉 Dapper:从结果集的第几列开始,后面的字段映射给第二个实体。...string sql = @"SELECT u.Id, u.Name, a.City, a.Street FROM Users u JOIN Addresses a ON...splitOn 填的是 Address 的第一个字段名。 新手容易在这里翻车:splitOn 拼错了,或者列的先后顺序跟代码里实体顺序对不上,查出来的数据就全 null。...核心 API 这点东西其实不复杂,Dapper 的优势从来不是"功能多",而是"够用且快"。 下一篇讲异步写法。

21400
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Dapper简明教程

    下面直接进入正题: 使用前准备 添加对Dapper的引用 在使用Dapper之前,我们要首先添加对Dapper的引用,这里小编使用NuGet来添加引用。...join   使用join查询时需要用到Query方法中的splitOn参数,话说这个参数让小编纠结了很久才弄明白。...关于splitOn参数的说明,可参考stackoverflow上的一篇文章Correct use of Multimapping in Dapper var result = dbConnection.Query...语句查询数据表的顺序一致, 即Student对应t_students表的查询结果s.Name,否则Query方法的查询结果 可能为null(这点也是困扰小编很久......) */ splitOn...参考文章: Dapper Dapper快速学习 Dapper中的一些复杂操作和inner join应该注意的坑 Dapper异常汇总 Correct use of Multimapping in Dapper

    2.6K50

    C# 数据操作系列 - 17 Dapper ——号称可以与ADO.NET 同台飙车的ORM

    这一篇,我们将试试另一个出镜率比较高的ORM框架-Dapper。 Dapper是一个轻量级的ORM框架,其以高速、简单易用为特点。在某些时候,效率甚至可以与ADO.NET 媲美。...TReturn> map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn...commandTimeout 命令执行是否超时以及超时时间 commandType 表示命令模式 有 Text 普通模式,StoredProcedure 存储过程 ,TableDirect 表查询 splitOn...commandType = null); 这个方法是返回查询结果的第一行第一列的元素。 6. 总结 如果单说Dapper的话,并没有太多好说的。...不过Dapper是真的快,在实际开发中有时候会用Dapper作为EF Core的一个补充。 当然了,Dapper还有很多其他的插件,使用那些插件可以为Dappe带来非一般的提升。

    2.7K40

    吃透 Dapper 异步操作,WebAPI 性能直接翻倍

    同步 Dapper 写起来很顺手,但一上 Web API 就得换异步。这篇聊为什么以及怎么用。 为什么不用异步会出事 线程池的大小是有限的。同步调数据库的时候,线程卡在那里等 IO,什么也干不了。...await db.ExecuteAsync("DELETE FROM Users WHERE Id = @Id", new { Id = }); 联表查询异步版也一样,加个 Async 后缀,splitOn...存储过程也是多一行 commandType 参数,跟同步完全一个套路。...db.QueryAsync(sql, (user, addr) => { user.Address = addr; return user; }, splitOn...RollbackAsync,别跟同步混 事务内所有操作同一个连接,不能新建 async Task 从 Controller 一路传到 Repository,中间不许断 异步连接也得 using,一样的释放逻辑 异步 Dapper

    15410

    Google云计算原理与应用(三)

    (二)Megastore数据模型 传统的关系型数据库不合适的三个原因:   传统的关系型数据库是通过连接(Join)来满足用户的需求的,但是就 Megastore 而言,这种数据模型是不合适的,主要有以下三个原因...: (1)对于高负载的交互式应用来说,可预期的性能提升要比使用一种代价高昂的查询语言所带来的好处多。...(3)在 Bigtable 这样的键/值存储系统中存储和查询级联数据(Hierarchical Data)是很方便的。 Megastore数据模型怎么设计?...(5)生效:将值的更新在尽可能多的副本上生效。如果选择的值和原来提议的有冲突,返回一个冲突错误。 4、协调者的可用性   协调者在系统中是比较重要的——协调者的进程运行在每个数据中心。...(1)广泛可部署性(Ubiquitous Deployment):设计出的监控系统应当能够对尽可能多的 Google 服务进行监控。

    66710

    简介

    Dapper.Contrib是对Dapper的进一步封装,使对象的基本增删改查等操作进一步简化。...为什么使用Dapper.Contrib 如果仅仅使用Dapper,要对一个对象进行insert操作需要如下操作 using (var connection = new SqlConnection("链接字符串...区别是打上Key特性的列在插入时是不能指定值的,只能是数据库自动增长列,而ExplicitKey特性可以允许在插入时指定值,比如用guid为主键类型,则主键在插入时必须已经生成好。...增删改查 做好上面的配置后就可以进行实体的操作了,Dapper.Contrib与Dapper一样都是拓展了DbConnection对象,方法如下(未列出异步方法) T Get(id); IEnumerable...Delete(T obj); bool Delete(Enumerable list); bool DeleteAll(); 值得注意的是,从源码得知,Get方法仅支持单主键查询,如果多主键或者没主键都会报错

    1.1K30

    【MySQL数据库】多表关系与多表联合查询

    目录 MySQL多表关系 一对一 一对多 多对多 MySQL外键约束 创建外键 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 外连接查询 子查询关键字 自关联 MySQL多表关系 MySQL...一对多 一个部门可以有多名员工,但一个员工只能归于一个部门 在多的一方建立外外键指向一的一方 多对多 下表为多对多关系,由下表可知多对多关系的中间表至少需要2个外键...MySQL外键约束 创建外键  格式: constraint foreign key 字段名[,字段名2,…] references 主键列1 [,主键列2,…] 方式一 创建表时添加外键...dept_id_fk foreign key(dept_id)references dept2 (deptno); 数据插入 添加主表数据 -- 注意必须先给主表添加数据 添加从表数据 -- 注意给从表添加数据时,外键列的值不能随便写...返回的数据类型 单行单列:返回的是一个具体列的内容,可以理解为一个单值数据; 单行多列:返回一行数据中多个列的内容; 多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围; 多行多列:查询返回的结果是一张临时表

    3.8K20

    2022年了有哪些值得推荐的.NET ORM框架?

    GitHub地址:https://github.com/DapperLib/Dapper 以下是Dapper相关拓展程序包: Dapper-Extensions - Dapper Extensions...Dapper-FluentMap - Dapper的扩展。 Dommel - Dapper的CRUD操作。 MicroOrm.Dapper.Repositories - Dapper的CRUD操作。...DbFirst 模式,支持从数据库导入实体类,或使用实体类生成工具生成实体类; 支持 深入的类型映射,比如 PgSql 的数组类型等; 支持 丰富的表达式函数,以及灵活的自定义解析; 支持 导航属性一对多、...多对多贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓...主要特点: 与Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 将列值分配给属性。 像Massive一样,它现在也支持动态 Expandos。

    8.8K11

    【MySQL数据库】多表关系与多表联合查询

    ​​目录MySQL多表关系一对一一对多多对多MySQL外键约束创建外键数据插入删除多表联合查询交叉连接查询内连接查询外连接查询子查询关键字自关联MySQL多表关系MySQL表与表之间的三种关系一对多关系...在多的一方建立外外键指向一的一方​编辑多对多 下表为多对多关系,由下表可知多对多关系的中间表至少需要2个外键​编辑 MySQL外键约束创建外键 格式: constraint foreign...key 字段名[,字段名2,…] references 主键列1 [,主键列2,…]方式一 创建表时添加外键create table if not exists emp( eid varchar...dept_id_fk foreign key(dept_id)references dept2 (deptno);数据插入添加主表数据 -- 注意必须先给主表添加数据添加从表数据 -- 注意给从表添加数据时,外键列的值不能随便写...返回的数据类型单行单列:返回的是一个具体列的内容,可以理解为一个单值数据;单行多列:返回一行数据中多个列的内容;多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;多行多列:查询返回的结果是一张临时表

    4.1K30
    领券