Dapper.Contrib
一、前言
我们已经知道了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相关推荐
- Dapper.Contrib扩展介绍
简介 Dapper.Contrib提供一系列关于增删查改扩展方法,目前有以下方法: T Get(id); IEnumerable GetAll(); int Insert(T obj); int In ...
- Dapper介绍--Micro-ORM
一.概述 目前对于.net的数据访问ORM工具很多,EF和EF Core是一个重量级的框架.最近在搭建新的项目架构,来学习一下轻量级的数据访问ORM工具Dapper.Dapper支持SQL Serve ...
- ASP.NET Core 中的 ORM 之 Dapper
Dapper简介 Dapper是.NET的一款轻量级ORM工具(GitHub),也可称为简单对象映射器.在速度方面拥有微型ORM之王的称号. 它是半自动的,也就是说实体类和SQL语句都要自己写,但它提 ...
- 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. ...
- 通过EF/Dapper扩展实现数据库审计功能
相信大家都有过周末被电话"吵醒"的经历,这个时候,客服同事会火急火燎地告诉你,客户反馈生产环境上某某数据"异常",然后你花费大量时间去排查这些错误数据,发现这是 ...
- 温故而知新,由ADO.NET与Dapper所联想到的
文章目录 重温ADO.NET 实现DynamicRow 实现参数化查询 本文小结 这段时间在维护一个"遗产项目",体验可以说是相当地难受,因为它的数据持久化层完全由ADO.NET纯 ...
- .NET Core学习——Dapper
一.了解Dapper 我们都知道,ORM全称是,Object Relationship Mapper,即,对象关系映射.也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有 ...
- 异常处理汇总-后端系列
异常处理汇总:http://www.cnblogs.com/dunitian/p/4599258.html Python:https://www.cnblogs.com/dotnetcrazy/p/9 ...
- dapperpoco mysql_Dapper-master
Dapper-master 所属分类:Windows编程 开发工具:C# 文件大小:239KB 下载次数:1 上传日期:2018-04-06 09:27:47 上 传 者:橙橙坨 说明: Dappe ...
最新文章
- 迈出编程第一步!必知必会的10个编程技巧及查错方法
- 《Div+CSS 3.0网页布局案例精粹》扫描版[PDF]
- 网络推广外包中有哪些不可取行为值得网络推广外包专员警示?
- Python内置函数(58)——input
- php实现上传,PHP实现文件上传例子
- JAVA进阶教学之(序列化和反序列化)
- android拍照功能编程,android实现手机App实现拍照功能示例
- 信息学奥赛一本通C++语言——1131:基因相关性
- java调用百度地图API依据地理位置中文获取经纬度
- 矩阵论16 17 18 19
- linux邮件客户端软件,适用于Linux的4款最佳电子邮件客户端 | MOS86
- h3c comware 使用 freeradius 统一认证---草稿
- 记一次axsi2调用 web services 提示 java.net.SocketException: Connection reset 的解决
- 如何用虚拟机VMware和Linux路由器搭建一个虚拟网络
- 怎样写好Flutter代码
- ReentrantLock 实现原理笔记(一)
- 8 精通matlab入门求微分方程组的通解特解数值解看这篇文章就够了
- 用Freeman码链表示图像边界
- Linux 命令之 7za -- 文件压缩命令
- 【Paper】Deep Learning for Anomaly Detection:A survey
热门文章
- Window7和Ubuntu双系统 删除Ubuntu
- 让人无法拒绝的内容种草营销
- JZOJ5686. 【GDOI2018Day1模拟4.24】狮鹫旅行
- NoSQL(MongoDB) + GraphQL 快速入门环境和资料
- 人脸识别、语音识别系统
- MSSQL数据库一对多和多对一查询的转换
- Windows10 1909:真正解决开机C:\WINDOWS\system32\config\systemprofile\Desktop不可用
- 图谱卷积预备知识1:拉普拉斯矩阵
- 华为手表新款watch gt3_【新品】华为全场景新品发布会正式举行:发布多款产品...
- .net使用Easyui+MVC进行图片上传的实现