百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何在 C# 中使用 Dapper ORM(c# datable)

ccwgpt 2024-09-17 12:27 38 浏览 0 评论

译文链接:https://www.infoworld.com/article/3025784/how-to-use-the-dapper-orm-in-c.html?nsdr=true

对象关系映射(ORM)这个概念已经存在很长时间了,ORM的作用就是用来解决 编程领域的 object model 和关系数据库中的 data model 的不匹配问题,Dapper 是一个开源的,轻量级的 ORM 框架,由 Stack Overflow 团队开发,Dapper 和其他流行的ORM框架相比,最大的优点就是羽翼级。

Dapper在最初开发时就考虑到了性能和易用性,它支持在 事务,存储过程 或者 批量插入时进行静态或者动态的对象绑定。

使用 Visual Studio 安装 Dapper ORM

要想了解 Dapper,从下面的步骤开始吧:

    1. 打开 Visual Studio
    1. 点击 文件 -> 新建 -> 项目
    1. 选择 网站 -> ASP.Net Web Application
    1. 给 web 项目指定一个名字
    1. 然后选择一个 空模板
    1. 点击 确定 生成 project

这样我们就创建好了一个 ASP.Net web application 项目

如果你已经安装了 NuGet,你可以通过 NuGet 去安装 Dapper,做法就是在 解决方案窗口 下的 Project 上右键选择 Manage NuGet Package ... 并且找到 Dapper,然后点击安装开启这个安装过程,一旦 Dapper 被成功安装,你就可以愉快的玩起来了哈。

使用 Dapper ORM 进行增删查改

接下来我用 Dapper 写一些简单的 CURD 语句来操作数据库,考虑如下的 IDG 数据库,包含了一个 Author 表,表的字段如下:

  • ID

  • FirstName

  • LastName

在使用Dapper时,你需要针对 数据库表 创建一个简单的实体类(POCO class),下面定义了 Author 实体对应 IDB 数据库的 Author 表。


    public class Author
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

使用 Dapper 的 Query() 扩展方法,可以实现对数据库的查询然后将数据填充到你的 object model 中,下面方法的作用就是从 Author 表中查询所有的数据,然后存储到内存中,最后返回一个集合给调用方。


    public List<Author> ReadAll()
    {
         using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“AdventureWorks”].ConnectionString))
         {
             return db.Query<Author>
             (“Select * From Author”).ToList();
         }
    }

对了,为了能够使用上 Dapper 的扩展方法,你需要在代码文件的顶部引入 Dapper 命名空间,如下图:

下面的方法展示了如何从 Author table 表中查询指定的记录。


    public Author Find(int id)    
    {
        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))
        {
            return db.Query<Author>(“Select * From Author “ + 
            WHERE Id = @Id”, new { id }).SingleOrDefault();
        }
    }

Dapper 的 Execute() 方法可以实现对数据的新增,修改,删除,此方法返回一个整数值,该值表示在执行查询时受到的影响行数。

下面的方法展示了如何使用 Dapper 更新一条记录。


    public int Update(Author author)
    {
        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))
        {
            string sqlQuery ="UPDATE Author SET FirstName = @FirstName, " +
            “ LastName = @LastName “ + “WHERE Id = @Id”;
            int rowsAffected = db.Execute(sqlQuery, author);
            return rowsAffected;
        }
    }

正如上面代码所述,Update 方法返回了一个受影响的行数,意味着这么多的记录被修改,上面这段代码只会有一条记录被更新,所以说如果更新成功返回的就是 1。

在 Dapper ORM 中使用 存储过程

为了能够使用 Dapper 执行存储过程,在调用 Query 或者 Execute 方法时需要手工指定一下 CommandType 类型,下面的例子展示了如何使用 Dapper 执行 存储过程。


    public List<Author> Read()
    {
        using (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))
        {
            string readSp ="GetAllAuthors";
            return db.Query<Author>(readSp, commandType: CommandType.StoredProcedure).ToList();
        }
    }

Dapper 框架也是支持事务操作的,如果有必要的话可以使用事务,使用方式很简单,你可以利用 BeginTransaction() 和 EndTransaction() 方法,其实和你使用 ADO.NET 的事务方式是一摸一样的,将需要事务的语句代码放置在 BeginTransaction 和 EndTransaction 之间即可。

Dapper ORM 真的是相当羽翼级 并且非常方便使用,它不会为你生成任何sql语句,在这种情况下还能够非常便捷的将查询结果映射到你的 POCO 对象上,最的是,它的执行速度远超 Entity Framework,实际上,能和原生的 ADO.Net 媲美。

更多高质量干货:参见我的 GitHub: dotnetfly**

相关推荐

用Deepseek扩写土木工程毕业论文实操指南

用Deepseek扩写毕业论文实操指南一、前期准备整理现有论文初稿/提纲列清楚论文核心框架(背景、现状、意义、方法、数据、结论等)梳理好关键文献,明确核心技术路线二、Deepseek扩写核心思路...

985学霸亲授,DeepSeek也能绘6大科研图表,5分钟就出图

在实验数据处理中,高效可视化是每个科研人的必修课。传统绘图软件操作复杂、耗时费力,而智能工具DeepSeek的出现彻底改变了这一现状。本文将详解如何用DeepSeek一键生成六大科研常用图表,从思维导...

AI写论文刷屏?大学生正在丢掉的思考力

一、宿舍深夜:当论文变成"Ctrl+C+V"凌晨两点的大学宿舍,小王对着电脑屏幕叹气。本该三天前开始写的近代史论文,此刻还一片空白。他熟练打开某AI写作网站,输入"论五四运动的...

Grok在辅助论文写作上能不能既“聪明”又“可怕”?!

AcademicIdeas-学境思源AI初稿写作随着人工智能技术的飞速发展,论文写作这一学术任务正迎来新的助力。2025年2月18日,美国xAI公司推出了备受瞩目的Grok3模型,其创始人埃隆·...

大四论文沟通场景!音频转文字难题听脑AI来化解

大四学生都知道,写论文时和导师沟通修改意见,简直是“过关斩将”。电话、语音沟通完,想把导师说的修改方向、重点要求记下来,麻烦事儿可不少。手写记不全,用普通录音转文字工具,转完还得自己慢慢找重点,稍不注...

论文写作 | 技术路线图怎么画?(提供经典优秀模板参考)

技术路线图是一种图表或文字说明,用于描述研究目标、方法和实施计划。它展示了研究的整体框架和步骤,有助于读者理解研究的逻辑和进展。在课题及论文中,技术路线图是常见的一部分,甚至是一个类似心脏一样的中枢器...

25年信息系统项目管理师考试第2批论文题目写作建议思路框架

25年信息系统项目管理师考试第2批论文题目写作建议思路框架--马军老师

微信购物应尽快纳入法律框架(微信购物管辖)

符向军近日,甘肃省工商行政管理局发布《2016年上半年信息分析报告》。报告显示,微信网购纠纷迅猛增长,网络购物投诉呈上升趋势。投诉的主要问题有出售的商品质量不过关、消费者通过微信付款后对方不发货、购买...

泛珠三角区域网络媒体与腾讯微信签署《战略合作框架协议》

新海南客户端、南海网7月14日消息(记者任桐)7月14日上午,参加第四届泛珠三角区域合作网络媒体论坛的区域网络媒体负责人及嘉宾一行到腾讯微信总部座谈交流,并签署《战略合作框架协议》(以下简称《框架协...

离线使用、植入微信-看乐心Mambo手环如何打破框架

从2014年开始智能手环就成功进入人们的生活,至今已经演变出数据监测、信息推送、心率监测等诸多五花八门的功能,人们选择智能手环并不指望其能够改变身体健康情况,更多的是通过数据来正视自身运动情况和身体健...

微信私域电商运营策略与框架(微信私域怎么做)

...

华专网络:如何零基础制作一个网站出来?

#如何零基础制作一个网站出来?#你是不是觉得网站建设很复杂,觉得自己是小白,需求不明确、流程搞不懂、怕被外包公司坑……这些问题我都懂!今天华专网络就用大白话给你捋清楚建站的全流程,让你轻松get网站制...

WAIC2024丨明日上午9点,不见不散!共同探讨智能社会与全球治理框架

大咖云集,硕果闪耀WAIC2024世界人工智能大会智能社会论坛将于7月5日9:00-12:00与你相约直播间WAIC2024上海杨浦同济大学哔哩哔哩多平台同步直播探讨智能社会与全球治理框架WAIC...

约基奇:森林狼换来戈贝尔时大家都在嘲笑 他们的阵容框架很不错

直播吧5月4日讯西部季后赛半决赛,掘金将迎战森林狼,约基奇赛前接受采访。约基奇说道:“当蒂姆-康纳利(森林狼总经理、前掘金总经理&曾选中约基奇)做了那笔交易(换来戈贝尔)时,每个人都在嘲笑他...

视频号带货为什么一个流量都没有?顶级分析框架送给你

视频号带货为什么一个流量都没有?遇到问题,一定是步步来分析内容,视频号带货一个流量都没有,用另外一个意思来讲,就可以说是零播放。为什么视频号带货一个流量都没有?跟你说再多,都不如来个分析框架。1、是否...

取消回复欢迎 发表评论: