返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中Dapper的使用教程
  • 927
分享到

C#中Dapper的使用教程

2024-04-02 19:04:59 927人浏览 薄情痞子
摘要

一、什么是Dapper   Dapper是一款轻量级ORM工具(GitHub)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系

一、什么是Dapper

  Dapper是一款轻量级ORM工具GitHub)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀。你又觉得ORM省时省力,这时Dapper 将是你不二的选择。

二、Dapper的优点

  1. 轻量。只有一个文件sqlMapper.cs,编译后就40K的一个很小的Dll.
  2. 速度快。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。
  3. 支持多种数据库。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, Mysql, postgresql and SQL Server
  4. 可以映射一对一,一对多,多对多等多种关系。
  5. 性能高。通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。
  6. 支持FrameWork2.0,3.0,3.5,4.0,4.5
  7. Dapper语法十分简单。并且无须迁就数据库的设计。

三、使用方法

  1、添加NuGet程序包Dapper

  

  2、配置文件添加连接数据库的字符串


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
  </startup>
  <connectionStrings>
    <add name="MyStrConn" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DHR_DB;Integrated Security=True" />
  </connectionStrings>
</configuration>

  3、添加DapperTools.cs(添加、批量添加、删除、批量删除、修改、批量修改、查询、查询in的操作、多语句操作)


// <copyright file="DapperTools.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>

namespace CSharpStudy
{
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Dapper;

    internal class DapperTools
    {
        public static string ConnectionString = ConfigurationManager.ConnectionStrings["MyStrConn"].ConnectionString;

        /// <summary>
        /// 添加.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入实体类型.</param>
        /// <returns>int.</returns>
        public static int Add<T>(string sql, T t)
            where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 批量添加.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入泛型类.</param>
        /// <returns>int.</returns>
        public static int Add<T>(string sql, List<T> t)
            where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 删除.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入实体类型.</param>
        /// <returns>int.</returns>
        public static int Delete<T>(string sql, T t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 批量删除.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入泛型类.</param>
        /// <returns>int.</returns>
        public static int Delete<T>(string sql, List<T> t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 修改.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入实体类型.</param>
        /// <returns>int.</returns>
        public static int Update<T>(string sql, T t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 批量修改.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入泛型类.</param>
        /// <returns>int.</returns>
        public static int Update<T>(string sql, List<T> t)
              where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Execute(sql, t);
            }
        }

        /// <summary>
        /// 查询.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <returns>泛型类.</returns>
        public static List<T> Query<T>(string sql)
             where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Query<T>(sql).ToList();
            }
        }

        /// <summary>
        /// 查询指定数据.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <param name="t">传入泛型类.</param>
        /// <returns>类.</returns>
        public static T Query<T>(string sql, T t)
             where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Query<T>(sql, t).SingleOrDefault();
            }
        }

        /// <summary>
        /// 查询的in操作.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        /// <returns>泛型类.</returns>
        public static List<T> Query<T>(string sql, int[] ids)
            where T : class
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                return connection.Query<T>(sql, new { ids }).ToList();
            }
        }

        /// <summary>
        /// 多语句操作.
        /// </summary>
        /// <typeparam name="T">实体类型.</typeparam>
        /// <param name="sql">传入sql执行语句.</param>
        public static void QueryMultiple(string sql)
        {
            using (IDbConnection connection = new SqlConnection(ConnectionString))
            {
                var multiReader = connection.QueryMultiple(sql);
                var userInfo = multiReader.Read<UserInfo>();
                var student = multiReader.Read<Student>();

                multiReader.Dispose();
            }
        }
    }
}

  4、添加测试类Student.cs、UserInfo。表数据自己添加


 public class Student
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public string Memo { get; set; }

        public DateTime CreateTime { get; set; }

        public DateTime UpdateTime { get; set; }
    }

public class UserInfo
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public string Memo { get; set; }

        public DateTime CreateTime { get; set; }

        public DateTime UpdateTime { get; set; }
    }

  5、调用方法


//-----------------------------------------------------------------------
// <copyright file="Program.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>
// <author>John Doe</author>
//-----------------------------------------------------------------------

namespace CSharpStudy
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Dapper;

    internal class Program
    {
        private static void Main(string[] args)
        {
            // --------------添加--------------
            // UserInfo user = new UserInfo();
            // user.Name = "九九";
            // user.Age = 10;
            // user.Memo = "这是备注";
            // user.CreateTime = DateTime.Now;

            // string sql = "Insert into UserInfo(Name,Age,Memo,CreateTime) values (@name, @Age, @Memo,@CreateTime)";
            // int result = DapperTools.Add<UserInfo>(sql, user);
            // if (result > 0)
            // {
            //     Console.WriteLine("添加成功");
            //     Console.ReadKey();
            // }

            // --------------批量添加--------------
            // UserInfo user = new UserInfo();
            // user.Name = "李奎";
            // user.Age = 50;
            // user.Memo = "这是备注";
            // user.CreateTime = DateTime.Now;

            // UserInfo user2 = new UserInfo();
            // user2.Name = "梁山伯";
            // user2.Age = 54;
            // user2.Memo = "这是备注";
            // user2.CreateTime = DateTime.Now;

            // List<UserInfo> list = new List<UserInfo>();
            // list.Add(user);
            // list.Add(user2);

            // string sql = "Insert into UserInfo(Name,Age,Memo,CreateTime) values (@name, @Age, @Memo,@CreateTime)";
            // int result = DapperTools.Add<UserInfo>(sql, list);
            // if (result > 0)
            // {
            //     Console.WriteLine("添加成功");
            //     Console.ReadKey();
            // }

            // --------------删除--------------
            // UserInfo user = new UserInfo();
            // user.Id = 18;

            // string sql = "delete from UserInfo where Id=@Id";
            // int result = DapperTools.Delete<UserInfo>(sql, user);
            // if (result > 0)
            // {
            //     Console.WriteLine("删除成功");
            //     Console.ReadKey();
            // }

            // --------------批量删除--------------
            // UserInfo user = new UserInfo();
            // user.Id = 15;

            // UserInfo user2 = new UserInfo();
            // user2.Id = 16;

            // List<UserInfo> list = new List<UserInfo>();
            // list.Add(user);
            // list.Add(user2);

            // string sql = "delete from UserInfo where Id=@Id";
            // int result = DapperTools.Delete<UserInfo>(sql, list);
            // if (result > 0)
            // {
            //     Console.WriteLine("添加成功");
            //     Console.ReadKey();
            // }

            // --------------修改--------------
            // UserInfo user = new UserInfo();
            // user.Id = 14;
            // user.Name = "九九";

            // string sql = "update UserInfo set Name=@Name,UpdateTime=GETDATE() where Id=@ID";
            // int result = DapperTools.Update<UserInfo>(sql, user);
            // if (result > 0)
            // {
            //     Console.WriteLine("修改成功");
            //     Console.ReadKey();
            // }

            // --------------批量修改--------------
            // UserInfo user = new UserInfo();
            // user.Id = 13;
            // user.Name = "王文";

            // UserInfo user2 = new UserInfo();
            // user2.Id = 14;
            // user2.Name = "冰冰";

            // List<UserInfo> list = new List<UserInfo>();
            // list.Add(user);
            // list.Add(user2);

            // string sql = "update UserInfo set Name=@Name,UpdateTime=GETDATE() where Id=@ID";
            // int result = DapperTools.Update<UserInfo>(sql, list);
            // if (result > 0)
            // {
            //     Console.WriteLine("修改成功");
            //     Console.ReadKey();
            // }

            // --------------查询--------------
            // string sql = "select * from UserInfo";
            // List<UserInfo> list = DapperTools.Query<UserInfo>(sql);
            // foreach (var item in list)
            // {
            //     Console.WriteLine(item.Id + "-" + item.Name + "-" + item.Age + "-" + item.Memo);
            // }

            // Console.ReadKey();

            // --------------查询指定数据--------------
            // UserInfo user = new UserInfo();
            // user.Id = 14;

            // string sql = "select * from UserInfo where Id=@Id";
            // UserInfo userInfo = DapperTools.Query<UserInfo>(sql, user);

            // Console.WriteLine(userInfo.Id + "-" + userInfo.Name + "-" + userInfo.Age + "-" + userInfo.Memo);
            // Console.ReadKey();

            // --------------查询的in操作--------------
            // string sql = "select * from UserInfo where Id in @ids";
            // int[] ids = { 1, 2 };

            // List<UserInfo> list = DapperTools.Query<UserInfo>(sql, ids);
            // foreach (var item in list)
            // {
            //     Console.WriteLine(item.Id + "-" + item.Name + "-" + item.Age + "-" + item.Memo);
            // }

            // --------------多语句操作--------------
            // string sql = "select * from userinfo;select * from student";

            // DapperTools.QueryMultiple(sql);
        }
    }
}

源代码:

链接: https://pan.baidu.com/s/1IM3DiCqJCoSpvr11H6zddQ

提取码: 6ag9

后续会陆续更新其他资料,喜欢请关注哦!

我的博客:Https://www.cnblogs.com/duhaoran

到此这篇关于C# Dapper的使用的文章就介绍到这了,更多相关C#使用Dapper内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#中Dapper的使用教程

本文链接: https://lsjlt.com/news/129632.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中Dapper的使用教程
    一、什么是Dapper   Dapper是一款轻量级ORM工具(Github)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问及关系...
    99+
    2024-04-02
  • 如何在C#中使用Dapper ORM
    目录使用 Visual Studio 安装 Dapper ORM使用 Dapper ORM 进行增删查改在 Dapper ORM 中使用 存储过程对象关系映射(ORM)这个概念已经存...
    99+
    2024-04-02
  • 在C#中怎么使用Dapper ORM
    这篇文章将为大家详细讲解有关在C#中怎么使用Dapper ORM,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用 Visual Studio 安装 Dapper ORM要想了解 Dapper,从下面的步...
    99+
    2023-06-14
  • C#中Dapper怎么用
    小编给大家分享一下C#中Dapper怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、什么是Dapper  Dapper是一款轻量级ORM工具(Github...
    99+
    2023-06-20
  • C#中类的使用教程详解
    目录实例化类成员访问赋值方法方法调用方法重载在对类访问使用时,常用到的有访问类的成员、方法。 实例化 在对类进行访问时,需要将类进行实例化。并产生一个对象。可以使用关键字new来实现...
    99+
    2024-04-02
  • c++中nlohmann json的基本使用教程
    目录一.json.hpp库下载及安装1.1 开源地址及引入方法1.2 demo程序测试二.nlohmann json基本操作2.1 由basic value创建json2.2 由js...
    99+
    2024-04-02
  • .Net Core下使用Dapper的方法
    目录一、前言二、Dapper环境搭建三、Dapper封装定义DapperDBContext类异步分页构建(PageAsync)定义工作单元与事务定义数据仓储数据库连接四、Dapper...
    99+
    2024-04-02
  • C++中map 字典的基本使用教程
    目录前言1、map 类型的声明2、pair 类型3、map 数据的遍历1)直接遍历:2)使用迭代器遍历4、添加元素5、删除元素1、dict.erase(key)2、dict.eras...
    99+
    2024-04-02
  • 如何使用Dapper使用Inner join的操作
    这篇文章主要介绍如何使用Dapper使用Inner join的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、新创建两张表:Users表和Product表Users表定义如下:CREATE TABLE...
    99+
    2023-06-29
  • 如何在Asp.Net项目中使用ABP Dapper
    如何在Asp.Net项目中使用ABP Dapper?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一 安装包依赖  这个不做过多的解释,通过Nuget 包管理器或者通过程序包...
    99+
    2023-06-08
  • C# 索引器的使用教程
    目录概述语法索引器(Indexer)的用途重载索引器(Indexer)概述 索引器(Indexer) 允许一个对象可以像数组一样使用下标的方式来访问。 当您为类定义一个索引器时,该类...
    99+
    2024-04-02
  • 使用C++Matlab中的lp2lp函数教程详解
    目录1. matlab的lp2lp函数的作用2. matlab的lp2lp函数的使用方法3. C++ 实现3.1 complex.h 文件3.2 lp2lp.h 文件4. 测试结果4...
    99+
    2023-05-17
    C++ Matlab中的lp2lp函数 C++ Matlab lp2lp函数
  • C#Quartzs定时器的使用教程
    目录前言实现步骤前言 首先想到倒计时,定时任务。大家想到的肯定就是定时器。那么定时器在web和winfrom程序中有着很大的作用。那在服务器端有没有像定时器一样的存在呢。 有了这些需...
    99+
    2024-04-02
  • C# Chart 简单使用教程
    Chart控件可以用来绘制波形图、柱状图、饼图、折线图等,用来进行数据表现是很不错的,现在简单说一下这个控件的使用方法 XAML: <Window x:Class="WpfA...
    99+
    2022-11-21
    C# Chart使用 C# Chart
  • ABP引入Dapper框架的创建使用
    目录一. 首先准备好一个数据库建一个表二.建一个实体表三.然后再ABP框架的EF层安装 Abp.Dapper包使用首先DbContext引入对应的DbSet最后在应用层直接...
    99+
    2024-04-02
  • 详解Dev C++使用教程(使用Dev C++编写C语言程序)
    前面我们给出了一段完整的C语言代码,就是在显示器上输出“C语言中文网”,如下所示: #include <stdio.h> int main() { puts("C...
    99+
    2024-04-02
  • node.js中cluster的使用教程
    本文主要给大家介绍了关于node.js中cluster使用的相关教程,分享出来供大家参考学习,下面来看看详细的介绍: 一、使用NODE中cluster利用多核CPU var cluster = requ...
    99+
    2022-06-04
    教程 node js
  • Java中的OkHttp使用教程
    目录什么是OKHttpOkHttp基本使用添加依赖OkHttp工具类使用案例发送get请求发送Post请求发送异步请求什么是OKHttp 一般在Java平台上,我们会使用Apache...
    99+
    2024-04-02
  • JavaScript中Webpack的使用教程
    目录0.什么是Webpack1.Webpack的使用2.Webpack 的核心概念 2.1 entry2.1.1 单入口2.1.2 多入口2.2 output2.2.1 单...
    99+
    2024-04-02
  • VS2017使用教程(使用VS2017编写C语言程序)
    以下是使用VS2017编写C语言程序的简单教程:步骤1:安装VS2017首先,你需要从官方网站下载并安装Visual Studio ...
    99+
    2023-09-13
    C语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作