我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#中Dapper怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#中Dapper怎么用

小编给大家分享一下C#中Dapper怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、什么是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

  C#中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);        }    }}

以上是“C#中Dapper怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#中Dapper怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#中Dapper怎么用

小编给大家分享一下C#中Dapper怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、什么是Dapper  Dapper是一款轻量级ORM工具(Github
2023-06-20

在C#中怎么使用Dapper ORM

这篇文章将为大家详细讲解有关在C#中怎么使用Dapper ORM,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用 Visual Studio 安装 Dapper ORM要想了解 Dapper,从下面的步
2023-06-14

怎么用Dapper

本文小编为大家详细介绍“怎么用Dapper”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Dapper”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。dapper除了支持基础的CURD、存储过程以外,还支持操
2023-06-29

如何在Asp.Net项目中使用ABP Dapper

如何在Asp.Net项目中使用ABP Dapper?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一 安装包依赖  这个不做过多的解释,通过Nuget 包管理器或者通过程序包
2023-06-08

ABP引入Dapper框架怎么创建使用

本篇内容主要讲解“ABP引入Dapper框架怎么创建使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ABP引入Dapper框架怎么创建使用”吧!一. 首先准备好一个数据库建一个表二.建一个实体
2023-06-30

C/C++中gtest怎么用

这篇文章主要介绍了C/C++中gtest怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Google C++ Testing Framework(简称gtest,http
2023-06-17

c++中!怎么用

c++ 中惊叹号 (!) 表示逻辑非运算,将布尔值取反:如果值为真,返回假;如果值为假,返回真。C++ 中的惊叹号 (!) 用法在 C++ 中,惊叹号 (!) 操作符表示逻辑非运算。它的作用是将一个布尔值(true 或 false)取反。
c++中!怎么用
2024-04-26

c++中::怎么用

在 c++ 中,:: 运算符用于访问类的静态成员或全局变量。它可以让您访问静态成员,即使没有类实例,也可以访问全局变量,即使没有源文件。:: 在 C++ 中的用途:: 是 C++ 中的一个运算符,称为域解决运算符。它用于访问类的静态成员和
c++中::怎么用
2024-04-26

c++中?:怎么用

条件运算符(?:)在 c++ 中可根据条件执行不同操作。语法:condition ? true_expression : false_expression。其中,condition 是布尔表达式,确定执行true_expression或fa
c++中?:怎么用
2024-04-26

C++/C中#define怎么使用

本篇内容介绍了“C++/C中#define怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 缩减代码 第一种用法与typedef类似
2023-07-02

C#中dialogresult.ok怎么用

在C#中,DialogResult.OK用于指示对话框的结果为"确定"。通常,可以在对话框的按钮的Click事件中使用DialogResult.OK来设置对话框的结果。以下是一个示例:private void btnOk_Click(ob
C#中dialogresult.ok怎么用
2024-02-29

c++中define怎么用

define 是 c++ 预处理器指令,用于定义宏,是一个名称,代表值或代码块。使用方法:预处理器宏:引用宏名称替换为值或代码块。宏函数:宏定义为函数,使用宏名() 调用。优点:缩写代码。定义常量。条件编译。注意事项:命名空间问题。宏副作用
c++中define怎么用
2024-05-12

c++中setw怎么用

setw() 函数用于设置 c++ 中输出字段的最小宽度,允许指定每个值的右对齐和填充空格。其语法为 ostream& setw(int width),参数为要设置的字符宽度。它仅影响当前输出操作,后续输出不受影响,并且可以与其他格式化标志
c++中setw怎么用
2024-04-28

C++中decltype怎么用

这篇文章给大家分享的是有关C++中decltype怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.语法decltype ( 实体 ) (1) (C++11 起)decltype ( 表达式 ) (2) (
2023-06-21

c#中token怎么用

这篇文章主要介绍了c#中token怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。token的存在意义这是我初略了解的token的存在意义用户使用用户名密码来请求服务器服
2023-06-29

c++中strcpy_s怎么用

strcpy_s 函数用于安全地将字符串 src 复制到字符串 dst 中,其语法为:检查参数的有效性。调用 strcpy_s,将 src 复制到 dst 中。检查返回值以确保复制成功或目标字符串是否太小。strcpy_s函数在 C++ 中
c++中strcpy_s怎么用
2024-05-08

c++中std::怎么用

std 是 c++ 中包含标准库组件的命名空间。为了使用 std,需要使用 "using namespace std;" 语句。直接使用 std 命名空间中的符号可以简化代码,但建议仅在需要时使用,以避免命名空间污染。std 在 C++ 中
c++中std::怎么用
2024-05-09

c++中counter怎么用

c++ 中的 counter 是一个 stl 容器,用于存储和计数不同的值。它使用整型键和值,通过 [] 运算符插入或更新值,提供遍历、查找最大值和排序元素等操作。例如,可以用来统计单词出现的次数。理解 C++ 中的 counterC++
c++中counter怎么用
2024-04-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录