1.安装,直接用nuget搜索Dapper就行,不过只支持框架4.5.1

2.数据库测试表

CREATE TABLE [dbo].[Student](
[ID] [bigint] NULL,
[Name] [nvarchar](50) NULL,
[Birthday] [date] NULL,
[TeacherID] [bigint] NULL,
[Level] [smallint] NULL,
[Remark] [nvarchar](50) NULL
) ON [PRIMARY] GO
CREATE TABLE [dbo].[Teacher](
[ID] [bigint] NULL,
[Name] [nvarchar](50) NULL,
[Birthday] [date] NULL,
[Gender] [bit] NULL
) ON [PRIMARY]

3.Person

   class Person
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime Birthday { get; set; }
}

4.Student

 class Student:Person
{ /// <summary>
/// 这里故意加了加了个一个实体Teacher,在数据库里面,只有一个TeacherID
/// </summary>
public Teacher Teacher{set;get;} public int TeacherID
{
set;
get;
}
public int? Level{set;get;} public string Remark{set;get;} }

5.Teacher

   class Teacher:Person
{
public bool Gender { get; set; }
}

6.测试代码

 class Program
{
static IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["dbstring"].ConnectionString);
static void Main(string[] args)
{
string sql = string.Empty;
{
//普通插入
sql = "insert into Teacher values(@ID,@Name,@Birthday,@Gender) ";
var max = db.Query<int>("select isnull(max(id),0) id from Teacher");
var maxID = max == null ? : max.FirstOrDefault();
Teacher t = new Teacher() { ID = (maxID + ), Gender = false, Name = "Miss Gao", Birthday = DateTime.Now.AddYears(-) };
var result = db.Execute(sql, t);
} {
// //普通插入
var max = db.Query<int>("select isnull(max(id),0) id from student");
var maxID = max == null ? : max.FirstOrDefault();
sql = "insert into student values(@ID,@Name,@Birthday,@TeacherID,@Level,@Remark)";
var result = db.Execute(sql, new Student() { ID = (maxID + ), Name = "Jim", TeacherID = , Remark = "a", Birthday = DateTime.Now, Level = }); }
{//无条件查询
var result1 = db.Query<Student>("Select * from Student");//
var result2 = db.Query<Student>("Select [ID] ,[Name] ,[Birthday] ,[TeacherID] ,[Level] ,[Remark] from Student");//
} {//带条件查询
var result1 = db.Query<Student>("Select * from Student where name=@Name", new Student() { Name = "Jim" });//
var result2 = db.Query<Student>("Select * from Student where id=@ID", new Student() { ID = });//
var result3 = db.Query<Student>("Select [ID] ,[Name] ,[Birthday] ,[TeacherID] ,[Level] ,[Remark] from Student", new { Name = "Jim" });//
} {//联合查询
sql = @"Select *
from Student a join teacher b on a.TeacherID = b.id --where a.ID=@ID";//这里加条件怎么办?拼接SQL?
var result = db.Query<Student, Teacher, Student>(sql, (s, t) => { s.Teacher = t; return s; }); } {//联合查询2
sql = @"Select * from Student where id=@ID ;
select * from teacher where ID = (select teacherid from student where id=@ID)";
var result = db.QueryMultiple(sql, new { ID=});
var s = result.Read<Student>().FirstOrDefault();
s.Teacher = result.Read<Teacher>().FirstOrDefault();
} {//联合查询3
sql = @"Select * from Student where id=@ID ;
select * from teacher where Name =@Name";
var result = db.QueryMultiple(sql, new { ID = ,Name="Miss Gao" });//这里的参数 是很奇怪的哦
var s = result.Read<Student>().FirstOrDefault();
var t= result.Read<Teacher>().FirstOrDefault();
}
}
}

[C#]Dapper学习笔记的更多相关文章

  1. Dapper学习笔记(1)-开始

    Dapper是一款开源的轻量级ORM工具,源代码下载地址为https://github.com/StackExchange/dapper-dot-net,其具有以下特点: 1.Dapper是一个轻型的 ...

  2. Dapper学习笔记(一)

    https://github.com/StackExchange/dapper-dot-net Dapper是对IDbConnection的扩展,需要使用Dapper提供的扩展只需要把SqlMappe ...

  3. Dapper学习笔记(4)-事务

    Dapper中对事务的处理也非常简单,如下代码所示: private void DapperTransaction() { using (IDbConnection con = OpenConnect ...

  4. Dapper学习笔记(2)-链接引用

    在研究Dapper源码时发现Dapper NET45类库中的SqlMapper.cs文件前面有个蓝色的箭头图标,发现在Dapper NET45文件夹下根本不存在SqlMapper.cs文件,其文件属性 ...

  5. Dapper 学习笔记

    一.基础 1.Dapper代码就一个SqlMapper.cs文件, 前人测试Dapper速度较快 的Orm,读取速度接近IDataReader,超过DataTable. 2.a.下载地址 https: ...

  6. Dapper学习笔记

    听说有个轻量化的orm Dapper,我就去了解下.试着对Sql Server和Mysql进行增删改查,体验不错.它不如EF臃肿,也比一般的封装灵活,比如我们封装了一个映射类.利用反射,在Execut ...

  7. Dapper学习笔记(5)-存储过程

    一.无参存储过程 第一步:创建一个不带参数的存储过程,代码如下: CREATE PROCEDURE [dbo].[QueryRoleNoParms] AS BEGIN SELECT * FROM T_ ...

  8. Dapper学习笔记(3)-增、删、改、查

    一.建表 在数据库中建立如下三张表: CREATE TABLE [dbo].[T_User] ( , ) PRIMARY KEY NOT NULL, ) NOT NULL, ) NULL, ) NUL ...

  9. 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

    不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...

随机推荐

  1. IOS初级:AFNetworking

    狗 日的,第三方框架真j8难搞 1.为什么NS_ASSUME_NONNULL_BEGIN在6.2报错,你他么的还挑IDE,你这是什么态度? 2.还有,你他么的自动给老子转json了,有问过我么? #i ...

  2. JS下拉页面时一个横幅的样式和js

    整理之前的代码,发现有一个js,就是页面往下浏览时,上面的商品名称和购买按钮在页面上方悬浮的,就整理下来,代码如下: <script type="text/javascript&quo ...

  3. On the internet, nobody known you are a dog !

  4. 基于注解的接口限流+统一session认证

    代码心得: 一个基本的做法:对于用户身份认证做到拦截器里,针对HandlerMethod进行统一拦截认证,根据方法上的注解标识,判别是否需要身份验证,并将查找出来的User实体存入ThreadLoca ...

  5. DHT

    DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一 ...

  6. CMDB 配置管理数据库

  7. JavaScript的进阶篇

    一.Array对象.数组对象 1)创建数组对象 //Array 对象用于在单个的变量中存储多个值. //语法: //创建方式1: ,,]; //创建方式2: new Array(); // 创建数组时 ...

  8. 20175316盛茂淞-Java第1周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java入门 1.Java简介(地位,特点) 2.安装JDK,设置系统环境 3.编译J ...

  9. 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)

    传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...

  10. 执行sh脚本文件下载Github上的代码(雷霄骅的ffmpeg示例代码)

       今天想重新学习下ffmpeg,于是又来到了雷晓骅的博客,先下载了他的所有代码,这里记录一下在Windows上使用sh脚本下载GitHub上代码的过程. CygWin(最后并没有用到)    可以 ...