问题描述

使用Dapper如何向数据库中批量插入数据或者说使用Dapper如何插入一个集合(List),在没有使用Dapper(使用Ado.net)的情况下,我们通常的实现方式如下:

try

{

connection.Open();

for (int i = 0; i < processList.Count; i++)

{

string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@Id, @st_Time, @ed_Time, @td_Time)";

command = new SqlCommand(processQuery, connection);

command.Parameters.Add("Id", SqlDbType.Int).Value = processList[i].ID;

command.Parameters.Add("st_Time", SqlDbType.DateTime).Value = processList[i].ST_TIME;

command.Parameters.Add("ed_Time", SqlDbType.DateTime).Value = processList[i].ED_TIME;

command.Parameters.Add("td_Time", SqlDbType.DateTime2).Value = processList[i].TD_TIME;

dataReader.Close();

dataReader = command.ExecuteReader();

}

connection.Close();

}

catch (SqlException ex)

{

//--Handle Exception

}

在Dapper中,是否有一种方式,可以批量向数据库中写入一个数据集合,而不需要进行循环就可以完成,比如这样的:

connection.Execute(processQuery ... );

示例涉及到的实体类:

ProcessLog.cs

class ProcessLog

{

public int ID { get; set; }

public DateTime ST_TIME { get; set; }

public DateTime ED_TIME { get; set; }

public DateTime TD_TIME { get; set; }

public string frequency { get; set; }

}

方案一

创建一个实体类:

public class MyObject

{

public int A { get; set; }

public string B { get; set; }

}

然后,循环调用Dapper的Execute方法:

foreach (var item in processList)

{

string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";

connection.Execute(processQuery, item);

}以上的参数

foreach (var item in processList)

{

string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";

connection.Execute(processQuery, new { A = item.A, B = item.B });

}

当然,以上实现只是常规的方式,你也可以使用Dapper的批量插入方法,在Execute(...)方法的第二个参数中传入集合即可,如:

string processQuery = "INSERT INTO PROCESS_LOGS VALUES (@A, @B)";

connection.Execute(processQuery, processList);

方案二

使用事务处理和执行集合参数:

SqlTransaction trans = connection.BeginTransaction();

connection.Execute(@"

insert PROCESS_LOGS(Id, st_Time, ed_Time, td_Time)

values(@Id, @st_Time, @ed_Time, @td_Time)", processList, transaction: trans);

trans.Commit();

ado.net mysql 批量插入_[Dapper].NET/C#程序开发中使用Dapper批量插入数据集合的方法应该如何实现?...相关推荐

  1. JAVA共有几种窗体布局方式_在Java GUI程序开发中常见的三种布局管理器是什么

    答:FlowLayout 流式布局,从左到右,如果到边界就换行再从左到右. BorderLayout 边界布局(默认布局方式),按东西南北中五个方向来布局,默认是中.后设置在同样位置的控件会覆盖之前的 ...

  2. 在python中如何判断数组中的数据为空值_缓存穿透问题,开发中真实解决方案

    前几天我们讲到了缓存的读写策略(缓存读写策略,我们开发人员都是这么用的)以及如何搭建高可用缓存系统(分布式缓存的高可用方案,我们都是这么做的),都是为了能在基础架构上让我们的缓存命中率能更高,防止大量 ...

  3. JAVA跟MYSQL数据库交互_【编写Java程序实现与Mysql数据库的连接,并交互性的实现简单查询,删除,修改,排序,显示等操作】...

    目前博主只实现了查询和插入,而且还不太会在面板对数据库语句进行更新,写完再看感觉语言有些冗杂,往后再更,大半夜写这个也是醉了呢. import javax.swing.*; import java.a ...

  4. 字符串插入_计算机毕业设计中小程序插入html代码

    点击上方"蓝字",关注我们. 一.首先,html 分 2 种情况: 1.做详情页开发的时候发现获取到的数据是 转译后的 html字符串,如下图: 这种 转译后的 html字符串,左 ...

  5. ffmpeg mac 批量脚本_使用批处理脚本(BAT)调用FFMPEG批量编码视频

    使用批处理脚本(BAT)编码视频非常方便,尤其当视频序列非常多的时候,更是省了不少简单重复性劳动. 只要学会批处理里面几个基本的命令就行了,感觉和c/c++差不多. set:设置变量(注意:变量一般情 ...

  6. 树莓派要mysql的密码_树莓派raspberry Pi 3B+系统中安装mysql过程中不提示输入密码,安装完后如何设置密码...

    树莓派raspberry Pi 3B+安装mysql未提示输入密码,安装后修改mysql密码默认密码 使用mysql -uroot -p 命令连接mysql时,报错 pi@raspberrypi:/ ...

  7. php mysql工单_详解使用PHP开发客服工单系统

    如何使用PHP开发客服工单系统?本文主要介绍了基于PHP技术开发客服工单系统,需要的朋友可以参考下.希望对大家有所帮助. PESCMS Ticket PESMCS Ticket(下称PT)是一款基于G ...

  8. php mysql好学吗_零基础小白PHP开发好学吗

    零基础小白PHP开发好学吗,PHP知识点有哪些呢,如果分段学习PHP技术,你所知道的方法有哪些呢? 第一阶段 2048.扫雷.贪吃蛇游戏项目贯穿 内容管理 文件操作 PL/SQL编程 HTTP服务器开 ...

  9. mysql反向递归查询_递归查询所有下级部门树形结构反向递归获取所有ID集合

    mysql递归搜索再之前得原创文档里已经写明了,这个网上比较多. 直接进入正题:原创手写反递归 package com.kb.nxccims.common.util; import java.util ...

最新文章

  1. 学习LOWORD、 HIWORD、LOBYTE、HIBYTE
  2. react-native 小米手机和 mac 安装
  3. Alpha 冲刺(2/10)
  4. 取KindEditor中的textarea的值区不到的解决方案,固定kindEditor的高度
  5. React 解决鼠标移入子元素触发父元素的mouseout事件
  6. 你觉得我的这段Java代码还有优化的空间吗?
  7. java面试编程面试题_完美的编程面试问题
  8. matlab sunlink工具箱,FreeBSD handbook Unix Basics
  9. 一个OA解决方案的经典模板
  10. 是真的!华为2019年应届博士年薪最高达201万
  11. yarn 安装使用小记
  12. openGauss支持国密SM3和SM4算法
  13. 国家科技管理信息系统构建及其对科技情报工作的影响
  14. stm32指纹考勤机 (程序源码包括app程序+pcb电路图+原件清单)
  15. 羞羞的报告:2020年轻人性爱数据报告。
  16. 双河市谷歌高清卫星地图下载
  17. AHRS和IMU的联系和区别
  18. java程序员 女装_java程序员面试着装要求是什么?
  19. 如何利用液体密度传感器准确地表征罐箱的质量规格?
  20. 【Microsoft Azure 的1024种玩法】二十六. 在Azure VM中手动部署Windows Admin Center管理平台

热门文章

  1. 资本寒冬来临,美图的增长引擎如何发动?
  2. 今日还有1款红包封面可以领了,记得定闹钟!
  3. 颜色模型转换(matlab)
  4. 百度地图获得POI及python实现
  5. [实战]C++加Lua加SDL来重写龙神录弹幕游戏(4):完善Game类
  6. 在ajax异步请求服务器报500万能解决方法
  7. 捂碳星球|换季整理衣橱,衣服该怎么存放和处理?
  8. 计算机音乐数字谱抖音,抖音计算器音乐乐谱是什么? 抖音计算器音乐乐谱介绍...
  9. Vue.js watch 用法总结
  10. HTML5添加背景音乐 3种方法个人推荐audio