一、前言

我们已经知道了Daper的基本使用,但是Dapper中需要使用sql语句。Dapper.Contrib的存在就是为了省写sql语句,是对Dapper的进一步封装,他直接提供了一些增删改查的方法。

二、使用

既然不需要sql语句了,那么肯定是需要一些配置的。。。就是配置实体模型。

我们数据库中有如下两张表:


那么我们的Entity为:

[Table("Players")]
public class Player
{[Key]public int Id { get; set; }public string FullName { get; set; }public decimal Salray { get; set; }public int TeamId { get; set; }public DateTime Birthday { get; set; }
}

主要是一些特性的介绍:

  • Table:指定数据库中的table名称。
  • Key:指定此列为主键(自动增长主键)。
  • ExplicitKey:指定此列为主键(不自动增长类型例如guid)
  • Computed:计算属性,update的时候会忽略
  • Write:表示该属性是否可写入。

Key和ExplicitKey这两项都是指定列为主键的,区别是打上Key特性的列在插入时是不能指定值的,只能是数据库自动增长列,而ExplicitKey特性可以允许在插入时指定值,比如用guid为主键类型,则主键在插入时必须已经生成好。

我们简单写了一个辅助类:

public class DapperContribHelper{string connStr = @"server=DESKTOP-P7UORUH\SQLEXPRESS;database=TestDB;uid=heater;pwd=123456";/// <summary>/// 获取所有数据/// </summary>/// <returns>所有数据</returns>public IEnumerable<Player> QueryAll(){using (IDbConnection conn = new SqlConnection(connStr)){return conn.GetAll<Player>();//没有主键也可以调用}}/// <summary>/// 通过主键查询数据。/// </summary>/// <param name="id">主键值</param>/// <returns>查询结果</returns>public Player QueryOne(int id){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Get<Player>(id);//并且这里的参数只能是主键}}/// <summary>/// 插入一组数据并且返回自动生成的主键的值/// </summary>/// <param name="player">要插入的数据</param>/// <returns>自动生成的主键的值</returns>public long Insert(Player player){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Insert<Player>(player);//被标记为[Key]、[Computed]、 [Write(false)]的实体属性都会被忽略。}}/// <summary>/// 批量插入数据并且返回插入数据的个数/// </summary>/// <param name="players">要插入的数据</param>/// <returns>数量</returns>public long Insert(IEnumerable<Player> players){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Insert<IEnumerable<Player>>(players);//被标记为[Key]、[Computed]、 [Write(false)]的实体属性都会被忽略。}}/// <summary>/// 根据主键修改数据/// </summary>/// <param name="player">修改后的数据</param>/// <returns>是否修改成功</returns>public bool Update(Player player){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Update<Player>(player);//根据传入的实体中主键值找到想修改的数据}}/// <summary>/// 批量修改数据/// </summary>/// <param name="players"></param>/// <returns></returns>public bool Update(IEnumerable<Player> players){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Update<IEnumerable<Player>>(players);//根据传入的实体中主键值找到想修改的数据}}/// <summary>/// 根据主键删除数据/// </summary>/// <param name="player"></param>/// <returns></returns>public bool Delete(Player player){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Update<Player>(player);//根据传入的实体中主键值找到想修改的数据}}/// <summary>/// 批量删除数据/// </summary>/// <param name="players"></param>/// <returns></returns>public bool Delete(IEnumerable<Player> players){using (IDbConnection conn = new SqlConnection(connStr)){return conn.Update<IEnumerable<Player>>(players);//根据传入的实体中主键值找到想修改的数据}}
}

三、总结

我们可以发现,省了Sql语句后确实简单了很多。但是也有很多有限制的地方,例如删改查等只能通过主键来进行,也不能与其他表进行联动。

Dapper.Contrib相关推荐

  1. Dapper.Contrib扩展介绍

    简介 Dapper.Contrib提供一系列关于增删查改扩展方法,目前有以下方法: T Get(id); IEnumerable GetAll(); int Insert(T obj); int In ...

  2. Dapper介绍--Micro-ORM

    一.概述 目前对于.net的数据访问ORM工具很多,EF和EF Core是一个重量级的框架.最近在搭建新的项目架构,来学习一下轻量级的数据访问ORM工具Dapper.Dapper支持SQL Serve ...

  3. ASP.NET Core 中的 ORM 之 Dapper

    Dapper简介 Dapper是.NET的一款轻量级ORM工具(GitHub),也可称为简单对象映射器.在速度方面拥有微型ORM之王的称号. 它是半自动的,也就是说实体类和SQL语句都要自己写,但它提 ...

  4. 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. ...

  5. 通过EF/Dapper扩展实现数据库审计功能

    相信大家都有过周末被电话"吵醒"的经历,这个时候,客服同事会火急火燎地告诉你,客户反馈生产环境上某某数据"异常",然后你花费大量时间去排查这些错误数据,发现这是 ...

  6. 温故而知新,由ADO.NET与Dapper所联想到的

    文章目录 重温ADO.NET 实现DynamicRow 实现参数化查询 本文小结 这段时间在维护一个"遗产项目",体验可以说是相当地难受,因为它的数据持久化层完全由ADO.NET纯 ...

  7. .NET Core学习——Dapper

    一.了解Dapper 我们都知道,ORM全称是,Object Relationship Mapper,即,对象关系映射.也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有 ...

  8. 异常处理汇总-后端系列

    异常处理汇总:http://www.cnblogs.com/dunitian/p/4599258.html Python:https://www.cnblogs.com/dotnetcrazy/p/9 ...

  9. dapperpoco mysql_Dapper-master

    Dapper-master 所属分类:Windows编程 开发工具:C# 文件大小:239KB 下载次数:1 上传日期:2018-04-06 09:27:47 上 传 者:橙橙坨 说明:  Dappe ...

最新文章

  1. 迈出编程第一步!必知必会的10个编程技巧及查错方法
  2. 《Div+CSS 3.0网页布局案例精粹》扫描版[PDF]
  3. 网络推广外包中有哪些不可取行为值得网络推广外包专员警示?
  4. Python内置函数(58)——input
  5. php实现上传,PHP实现文件上传例子
  6. JAVA进阶教学之(序列化和反序列化)
  7. android拍照功能编程,android实现手机App实现拍照功能示例
  8. 信息学奥赛一本通C++语言——1131:基因相关性
  9. java调用百度地图API依据地理位置中文获取经纬度
  10. 矩阵论16 17 18 19
  11. linux邮件客户端软件,适用于Linux的4款最佳电子邮件客户端 | MOS86
  12. h3c comware 使用 freeradius 统一认证---草稿
  13. 记一次axsi2调用 web services 提示 java.net.SocketException: Connection reset 的解决
  14. 如何用虚拟机VMware和Linux路由器搭建一个虚拟网络
  15. 怎样写好Flutter代码
  16. ReentrantLock 实现原理笔记(一)
  17. 8 精通matlab入门求微分方程组的通解特解数值解看这篇文章就够了
  18. 用Freeman码链表示图像边界
  19. Linux 命令之 7za -- 文件压缩命令
  20. 【Paper】Deep Learning for Anomaly Detection:A survey

热门文章

  1. Window7和Ubuntu双系统 删除Ubuntu
  2. 让人无法拒绝的内容种草营销
  3. JZOJ5686. 【GDOI2018Day1模拟4.24】狮鹫旅行
  4. NoSQL(MongoDB) + GraphQL 快速入门环境和资料
  5. 人脸识别、语音识别系统
  6. MSSQL数据库一对多和多对一查询的转换
  7. Windows10 1909:真正解决开机C:\WINDOWS\system32\config\systemprofile\Desktop不可用
  8. 图谱卷积预备知识1:拉普拉斯矩阵
  9. 华为手表新款watch gt3_【新品】华为全场景新品发布会正式举行:发布多款产品...
  10. .net使用Easyui+MVC进行图片上传的实现