如何在C#中使用Dapper ORM

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

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

使用 Visual Studio 安装 Dapper ORM

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

  • 打开 Visual Studio
  • 点击 文件 -> 新建 -> 项目
  • 选择 网站 -> ASP.Net Web Application
  • 给 web 项目指定一个名字
  • 然后选择一个 空模板
  • 点击 确定 生成 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 媲美。

以上就是如何在C#中使用Dapper ORM的详细内容,更多关于C# 使用Dapper ORM的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#飞机打字游戏的代码示例(winform版)

    游戏界面 程序代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Media; namesp

  • c# winform主题实现的方法

    winform的主题实现没有bs里面那么舒服,下面做了一个简单实现,记录一下. 1.一个接口,需要做主题的控件.窗体都要实现这个接口 /// <summary> /// 使用主题的控件.窗体需要实现此接口 /// </summary> public interface IThemeControl { ITheme ThisTheme { get; set; } /// <summary> /// 重置主题 /// </summary> void ResetT

  • C#开发WinForm之DataGridView开发详解

    前言 DataGridView是开发Winform的一个列表展示,类似于表格.学会下面的基本特征用法,再辅以经验,基本功能开发没问题. 基本的数据渲染 根据提供的数据展示出效果. 提供给DataGridView数据源有很多方式,大致有如下三种: 直接增加,每个单元格类型都是DataGridViewTextBoxCell int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[0].Value =

  • 新手小白用C# winform 读取Excel表的实现

    一.界面部分: 首先,打开visual studio新建项目: 然后使用"工具箱"添加控件:分别添加button,datagridview,textbox三种窗体: 所得到的界面图如图所示:(多加了几个文本框) 二.代码部分: 1.添加命名空间: using System.Data.OleDb; //命名空间 2.添加类: //根据excle的路径把第一个sheel中的内容放入datatable public static DataTable ReadExcelToTable(stri

  • C# Winform 实现TCP发消息

    服务端: 窗体 代码: using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Windows.Forms;   namespace SocketStudy {     public partial class Form1 :

  • c# WinForm制作图片编辑工具(图像拖动、缩放、旋转、抠图)

    闲暇之余,开发一个图片编辑小程序.程序主要特点就是可方便的对多个图像编辑,实现了一些基本的操作.本文主要介绍一下程序的功能.设计思路. 执行程序 下载地址: https://pan.baidu.com/s/1cszsgjKN9ecWZ9sm1hDAdQ 1 功能介绍 程序主界面 点击打开图片,可选择多个图片文件.图片缩略图左侧显示,双击左侧图片,添加到编辑区. 图片编辑区分为:纸张区域和打印区域.图片只能在打印区编辑.当选中这两个区,可调整各个区的大小. 主要功能点: 1 拖动:选中图片后,可以

  • C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例)

    本文主要介绍了C# WinForm状态栏实时显示当前时间(窗体状态栏StatusStrip示例),分享给大家,具体如下: 实现效果:通过StatusStrip显示窗体状态栏,同时将状态栏分成三部分: 居左边显示相关文字信息及时间信息,中间操作系统登录名,居右边显示本地IP. 步骤: 1.创建窗体及添加StatusStrip 默认StatusStrip名称为statusStrip1 2.在statusStrip1的Items属性中 添加三个StatusLabel 默认名称为toolStripSta

  • C# winform中窗口关闭按钮的隐藏与禁用详解

    首先说一句: 不存任何一种方式可以单独隐藏关闭按钮,隐藏的话会把所有最大化,最小化,帮助,关闭按钮都给隐藏掉. 第一种:禁用窗口上部的关闭按钮 方法一:在Form1的窗口程序中desigener设计器中重写如下方法:(将此部分粘贴到窗口程序中去就可以了) protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg

  • c# WPF中自定义加载时实现带动画效果的Form和FormItem

    背景 今天我们来谈一下我们自定义的一组WPF控件Form和FormItem,然后看一下如何自定义一组完整地组合WPF控件,在我们很多界面显示的时候我们需要同时显示文本.图片并且我们需要将这些按照特定的顺序整齐的排列在一起,这样的操作当然通过定义Grid和StackPanel然后组合在一起当然也是可以的,我们的这一组控件就是将这个过程组合到一个Form和FormItem中间去,从而达到这样的效果,我们首先来看看这组控件实现的效果. 一 动画效果 看了这个效果之后我们来看看怎么来使用Form和For

  • C# 如何在WINForm程序中创建XML文件

    <?xml version="1.0" encoding="gb2312"?> <FilesInformation>   <version>1.0.1818.42821</version>   <description>说明</description>   <FileItem    FileName="name"   FileVersion="sdf"

  • C# 使用Winform 获取下拉框 选中的值

    我就废话不多说了,大家还是直接看代码吧~ string PrintName = cmbPrinter.SelectedIndex.ToString(); PrintName = cmbPrinter.SelectedItem.ToString(); // if (cmbPrinter.SelectedIndex != 0) { } string PrintName = ""; PrintName = cmbPrinter.SelectedItem.ToString(); //"

  • c# 如何自己实现一个ORM框架

    0. 前言 在之前的几篇内容中,我们了解了如何通过ADO.NET 访问数据库,如何修改.新增数据.如何通过DataSet和DataAdapter获取数据,我们将在这一篇试试自己实现一个简单的ORM框架或者说ORM工具类. 涉及到的知识点: 反射(初级) ADO.NET 已有知识 1. ORM 那么,问题来了,什么是ORM?ORM全称 Object Relational Mapping,翻译过来就是对象关系映射.是一种通过描述对象与数据库之间映射关系的数据,将对象保存到数据库中的技术. 在C#中,

随机推荐