当前位置:
首页 > Python基础教程 >
-
C#教程之微型orm框架--dapper的简单使用
1.安装
首先使用nuget安装dapper,因为这里的示例是使用mysql,所以还要安装mysql的驱动。如下图:
2 数据库表 脚本
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for class -- ---------------------------- DROP TABLE IF EXISTS `class`; CREATE TABLE `class` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `class_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8;
3 简单示例
这里的批量插入都是伪批量,实则是生成多条插入语句。有兴趣的可以看下面的博客实现真的批量插入。博客地址:http://www.cnblogs.com/renjing/p/MysqlBatchAdd.html
class Program { static string connStr = "server=127.0.0.1;user id=root;password=root;database=renjing;"; static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); #region 1. 插入 //这里的批量插入都是伪批量,实则是生成多条插入语句。有兴趣的可以看下面的博客实现真的批量插入。 //http://www.cnblogs.com/renjing/p/MysqlBatchAdd.html #region 1.0 批量插入。伪批量! //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // for (int i = 1; i <= 1000; i++) // { // conn.Execute("insert into student(name,age,class_id) values(@name,@age,@class_id)", new { name = "小明" + i, age = i % 100 + 1, class_id = i % 3 + 1 }); // Console.WriteLine(i + ".插入成功。。。"); // } //} #endregion #region 1.2 批量插入。伪批量! //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // var dataList = Enumerable.Range(1, 1000).Select(i => new { name="小明"+i, age = i % 100 + 1, class_id = i % 3 + 1 }); // int count = conn.Execute("insert into student(name,age,class_id) values(@name,@age,@class_id)", dataList); // Console.WriteLine($"批量插入 {count} 条 成功!!!"); //} #endregion #endregion #region 2. 查询 #region 2.0 基本查询 //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // var students = conn.Query<Student>("select * from student;"); // //参数化查询 // //var students = conn.Query<Student>("select * from student where name=@name;", new { name = "小明13" }); // foreach (var item in students) // { // Console.WriteLine($"{item.id}\t{item.name}\t{item.age}"); // } //} #endregion #region 2.1 动态类型查询 //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // var students = conn.Query("select * from student;"); // foreach (var item in students) // { // Console.WriteLine($"{item.id}\t{item.name}\t{item.age}"); // } //} #endregion #region 2.2 多结果查询 //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // var multi = conn.QueryMultiple("select * from student;select * from class;"); // var studentList = multi.Read<Student>().ToList(); // var classList = multi.Read<Class>().ToList(); // Console.WriteLine($"student:{studentList.Count} 条!"); // Console.WriteLine($"classList:{classList.Count} 条!"); //} #endregion #endregion #region 3. 修改 #region 3.0 修改 //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // var result = conn.Execute("update student set name=@name where id=@id;", new { name = "小明哥哥", id = 100 }); // Console.WriteLine("3.1 修改成功"); //} #endregion #endregion #region 4. 删除 #region 4.1 删除 //using (MySqlConnection conn = new MySqlConnection(connStr)) //{ // var result = conn.Execute("delete from student where id=@id;", new { id = 100 }); // Console.WriteLine("4.1 删除成功"); //} #endregion #endregion watch.Stop(); Console.WriteLine(watch.Elapsed); Console.Read(); } }
示例源码:http://files.cnblogs.com/files/renjing/ORMTest.rar
git地址:https://github.com/RichRen/dapper
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式