2、Dapper的使用
1、表结构介绍:
1)课程表
2)成绩表
3)学生表
2、获取数据库连接的工厂类
需要添加System.Configuration和MySql.Data.MySqlClient引用
namespace db
{
/// <summary>
/// 数据库连接工厂
/// </summary>
public class dbFactory
{
public static string connStr = ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString;
private static string prividerName = ConfigurationManager.ConnectionStrings["dbConn"].ProviderName; public static IDbConnection createConn()
{
IDbConnection conn = null;
switch (prividerName)
{
case "System.Data.SqlClient":
conn = new SqlConnection(connStr);
break;
case "MySql.Data.MySqlClient":
conn = new MySqlConnection(connStr);
break;
}
return conn;
}
}
}
3、模型类定义
namespace db.model
{
public class Couser
{
public int id { get; set; }
public string courseName { get; set; }
}
public partial class Score
{
public int id { get; set; }
public int score { get; set; }
public int courseId { get; set; }
public int studentId { get; set; }
}
public partial class Student
{
public int id { get; set; }
public string name { get; set; }
public int sex { get; set; }
public string tel { get; set; }
public string other { get; set; }
}
}
4、需要引入的包
using Dapper;
using DapperExtensions;
using db.model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Text;
5、相关使用例子
//查询单个实体
public static Couser query()
{
using (IDbConnection conn = db.dbFactory.createConn())
{
Console.WriteLine(conn.State);
//原生写法
string sql = " SELECT * FROM dbo.Course where id=@id ";
Couser model1 = conn.QueryFirstOrDefault<Couser>(sql, new { id = });
Console.WriteLine(conn.State);
return model1;
}
} //过滤查询like方式1
public static List<Couser> queryWhere1(string courseName)
{
using (IDbConnection conn = db.dbFactory.createConn())
{
//原生写法 模糊查询1
string sql = " SELECT * FROM dbo.Course where charindex(@courseName,courseName)>0 ";
List<Couser> list = conn.Query<Couser>(sql, new { courseName = courseName }).ToList();
return list;
}
} //过滤查询like方式2
public static List<Couser> queryWhere2(string courseName)
{
using (IDbConnection conn = db.dbFactory.createConn())
{
//原生写法 模糊查询2
string sql = " SELECT * FROM dbo.Course where courseName like @courseName ";
List<int> idList = new List<int>();
List<Couser> list = conn.Query<Couser>(sql, new { courseName = $"%{courseName}%" }).ToList();
return list;
}
} //in 查询
public static List<Couser> queryWhere3()
{
List<int> idList = new List<int>();
idList.Add();
idList.Add();
idList.Add();
idList.Add(); using (IDbConnection conn = db.dbFactory.createConn())
{
//原生写法 模糊查询2
string sql = " SELECT * FROM dbo.Course where id in @id ";
List<Couser> list = conn.Query<Couser>(sql, new { id = idList }).ToList();
return list;
}
} //查询所有
public static List<Couser> queryAll()
{
using (IDbConnection conn = db.dbFactory.createConn())
{
//原生写法
string sql = " SELECT * FROM dbo.Course ";
List<Couser> list = conn.Query<Couser>(sql).ToList();
return list;
}
} //返回动态类型
public static List<dynamic> getStudentScore()
{
using (IDbConnection conn = db.dbFactory.createConn())
{
//原生写法
string sql = @" SELECT dbo.Student.name,courseName,score FROM dbo.Course
LEFT JOIN dbo.Score ON dbo.Course.id = coursedId
LEFT JOIN dbo.Student ON studentId = dbo.Student.id; ";
List<dynamic> list = conn.Query<dynamic>(sql).ToList();
return list;
}
} //新增
public static int insert()
{
using (IDbConnection conn = db.dbFactory.createConn())
{
db.model.Couser model = new Couser();
model.courseName = "数据库原理";
//原生写法
string sql = " INSERT INTO dbo.Course(courseName ) VALUES (@courseName) ";
return conn.Execute(sql, model);
}
} //批量新增
public static void insertBatch()
{
using (IDbConnection conn = db.dbFactory.createConn())
{
List<Couser> list = new List<Couser>();
list.Add(new Couser { courseName = "Batch1" });
list.Add(new Couser { courseName = "Batch2" }); Console.WriteLine(conn.State);
//原生写法
string sql = " INSERT INTO dbo.Course(courseName ) VALUES (@courseName) ";
conn.Execute(sql, list);
Console.WriteLine(conn.State); }
} //修改
public static void update()
{
using (IDbConnection conn = dbFactory.createConn())
{
db.model.Couser model = new Couser();
model.id = ;
model.courseName = "数据库原理1";
//原生写法
string sql = " UPDATE dbo.Course SET courseName=@courseName WHERE id=@id ";
conn.Execute(sql, model);
}
} //删除
public static void delete()
{
using (IDbConnection conn = dbFactory.createConn())
{
string sql = " DELETE FROM dbo.Course WHERE id=@id ";
conn.Execute(sql, new { id = });
}
} //事务控制
public static void testTran()
{
using (IDbConnection conn = dbFactory.createConn())
{
conn.Open();
IDbTransaction ts = conn.BeginTransaction();
try
{
string sql1 = " DELETE FROM dbo.Course WHERE id=@id ";
conn.Execute(sql1, new { id = }, ts); string sql2 = " INSERT INTO dbo.Course(id, courseName ) VALUES (N'4', N'sdfsfd') ";
conn.Execute(sql2, new { id = }, ts); ts.Commit();
}
catch (Exception ex)
{
ts.Rollback();
}
finally
{
conn.Close();
}
}
}
2、Dapper的使用的更多相关文章
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- Dapper扩展之~~~Dapper.Contrib
平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html#skill 上一篇文章:Dapper逆天入门~强类型,动态类型 ...
- 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapp ...
- Dapper.Contrib:GetAsync<T> only supports an entity with a [Key] or an [ExplicitKey] property
异常处理:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 原来Model是这样滴 修改后是这样滴 注意点:Model里面的Table和Key ...
- Dapper where Id in的解决方案
简单记一下,一会出去有点事情~ 我们一般写sql都是==>update NoteInfo set NDataStatus=@NDataStatus where NId in (@NIds) Da ...
- ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...
- Asp.Net Core + Dapper + Repository 模式 + TDD 学习笔记
0x00 前言 之前一直使用的是 EF ,做了一个简单的小项目后发现 EF 的表现并不是很好,就比如联表查询,因为现在的 EF Core 也没有啥好用的分析工具,所以也不知道该怎么写 Linq 生成出 ...
- 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】
前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...
- mono for android中使用dapper或petapoco对sqlite进行数据操作
在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...
- Dapper:The member of type SeoTKD cannot be used as a parameter Value
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 上次说了一下Dapper的扩展Dapper.Contrib http://www. ...
随机推荐
- NOIP模拟题17.9.26
B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...
- django中模板
一.创建模板目录和模板html文件 # /templates/应用名称/html文件集合 #模板目录:创建项目根目录下面,和manage.py工具在同一层#在模板目录下面分别创建各个应用的模板目录#最 ...
- FZU 1575 小学生的游戏【模拟二分】
某天,无聊的小斌叫上几个同学玩游戏,其中有比较笨的小兴,比较傻的小雪,可爱的小霞和自以为是的小楠.他们去找聪明的小明去给他们当裁判.判定谁取得游戏胜利. 而这个游戏是由小斌想个1到10000000的数 ...
- 总体<导学>
有一些奇奇怪怪的数据集 波士顿房价数据集 使用sklearn.datasers.load_boston 加载相关的数据集 重要参数 return_X_y 表示是否返回target (价格) 默认为Fa ...
- replace all
OPTION COPY OUTREC FINDREP=(INOUT=(X'0E',X'400E', X'0F',X'0F40'))
- linux中各目录及详细介绍
一.Linux文件系统的层次结构 在Linux或UNIX操作系统中,所有的文件和目录都被组织成一个以根节点开始的倒置的树状结构,如图: 二.目录 1.目录的定义 目录相当于Windows中的文件夹,目 ...
- 【JZOJ4898】【NOIP2016提高A组集训第17场11.16】人生的价值
题目描述 NiroBC终于找到了人生的意义,可是她已经老了,在新世界,没有人认识她,她孤独地在病榻上回顾着自己平凡的一生,老泪纵横.NiroBC多么渴望再多活一会儿啊! 突然一个戴着黑色方框眼镜,方脸 ...
- Struts → 《Struts2程序开发》教材大纲
- 利用幂等性区分HTTP的POST与PUT请求
1.什么是幂等性 幂等性概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果. 2.REST请求中哪些是幂等操作 GET,PUT,DELETE都是幂等操作,而POST不是,以下进行分析: ...
- Directx11教程(45) alpha blend(2)
原文:Directx11教程(45) alpha blend(2) 在myTutorialD3D11_40中,我们在场景中再添加一个box,并把box放在水里,实现半透明的效果.如下图所示: ...