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. jquery或者JavaScript调用WCF服务的方法

    /****************************************************************** * Copyright (C): 一心堂集团 * CLR版本: ...

  2. javascript 事件流的应用之 addEventListener

    原始需求:防止按钮短时间内高频率触发点击事件,由于重复提交导致的业务异常. 图: demo: <!DOCTYPE html> <html lang="en" di ...

  3. Elastix 安装G729 G723语音编码

    下載適合自己機器及軟體版本的模組檔,基本上略分為 pentium/pentium2/pentium3/x86_64,Asterisk 1.2/1.4/1.6.前往 http://asterisk.ho ...

  4. 设置frameset高度

      设置frameset的高度 设置frameset高度 目前做了一个项目,界面如下: 这是使用frameset做的,在宽屏下开发一直没有发现什么问题,直到一个用户使用800*600的机子测试的时候, ...

  5. Python导入自定义类时显示错误:attempted relative import beyond top-level package

    显示这个错误可能有两个原因: 1.文件夹中没有包含__init__.py文件,该文件可以为空,但必须存在该文件. 2.把该文件当成主函数入口,该文件所在文件夹不能被解释器视作package,所以可能导 ...

  6. SpringBoot获取resource下证书失败

    1.第一种失败的情况:    本来使用Spring的上下文容器获取文件,将证书文件放在resource下,编译后获取文件会出现报错 java.security.spec.InvalidKeySpecE ...

  7. 【Linux】Jenkins+Git源码管理(三)

    摘要 本章介绍Jenkins配合Git源码管理,关于Jenkins的基本操作,参照[Linux]Jenkins配置和使用(二) 事例说明:在linux环境下,安装的jenkins,已安装git. 代码 ...

  8. 正则表达式,re模块

    一.正则表达式 正则表达式 : 匹配字符串,一般用于爬取数据. 正则表达式查询网址 : http://tool.chinaz.com/regex/?qq-pf-to=pcqq.group 1.元字符( ...

  9. Eclipse的SVN插件使用

    1       eclipse的SVN插件使用 1.1     svn插件安装 下载Subversion的eclipse插件 http://subclipse.tigris.org/servlets/ ...

  10. Tensflow预测股票实例

    import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf #———— ...