案例分享使用Dapper实现CRUD
一、简介
。Net平台下有非常多的ORM框架,ef(core)、dapper、nhibernate、sqlsugar、freesql等等,每个orm都有自己的特点,但性能这块还是dapper牛逼。二、使用案例
创建一个Asp。NetCoreWebApi项目,接口文档可以参照上一篇文章介绍的Knife4j进行配置。项目引入依赖:PackageReferenceIncludeDapperVersion2。0。123PackageReferenceIncludeMicrosoft。Data。SqlClientVersion3。1。2
项目使用SqlServer数据库,需要创建一个数据库:Article,一张表Product
建表脚本:CREATETABLE〔dbo〕。〔Product〕(〔ProductId〕〔varchar〕(50)NOTNULL,〔ProductName〕〔nvarchar〕(50)NOTNULL,〔CategoryId〕〔nvarchar〕(50)NULL,CONSTRAINT〔PKProduct〕PRIMARYKEYCLUSTERED(〔ProductId〕ASC)WITH(PADINDEXOFF,STATISTICSNORECOMPUTEOFF,IGNOREDUPKEYOFF,ALLOWROWLOCKSON,ALLOWPAGELOCKSON)ON〔PRIMARY〕)ON〔PRIMARY〕
新建数据库访问类:DataAccessusingSystem。Collections。Generic;usingSystem。Threading。Tasks;usingMicrosoft。Data。SqlClient;usingSystem。Data;usingDapper;namespaceApiDoc。Controllers{publicclassDataAccess{privatereadonlystringConnectionStringDataSource。;InitialCatalogArticle;UserIDsa;Password数据库密码;publicasyncTaskintExecuteT(stringsql,Tentity){usingIDbConnectionconnectionnewSqlConnection(ConnectionString);returnawaitconnection。ExecuteAsync(sql,entity);}publicasyncTaskIEnumerableTGetListT(stringsql,objectparamnull){usingIDbConnectionconnectionnewSqlConnection(ConnectionString);returnawaitconnection。QueryAsyncT(sql,param);}}}
新建产品类:Productsummary产品类summarypublicclassProduct{summary产品IDsummarypublicstringProductId{get;set;}summary产品名称summarypublicstringProductName{get;set;}summary产品分组summarypublicstringCategoryId{get;set;}}
新建控制器:ProductController〔Route(api〔controller〕)〕〔ApiController〕publicclassProductController:ControllerBase{summary读取单个summaryreturnsreturns〔HttpGet(Get)〕publicasyncTaskProductGet(stringproductId){DataAccessdataAccessnewDataAccess();varlistawaitdataAccess。GetListProduct(34;selectfromProductwhereproductId{productId})。ConfigureAwait(false);returnlist。FirstOrDefault();}summary读取集合summaryreturnsreturns〔HttpGet(List)〕publicasyncTaskIEnumerableProductList(){DataAccessdataAccessnewDataAccess();returnawaitdataAccess。GetListProduct(34;selectfromProduct)。ConfigureAwait(false);returnnewListProduct(){newProduct{ProductId1,ProductName优质大米,CategoryId1},newProduct{ProductId2,ProductName优质大豆,CategoryId1},};}summary删除summaryparamnameproductId主键param〔HttpDelete(Delete)〕publicasyncTaskintDelete(stringproductId){DataAccessdataAccessnewDataAccess();returnawaitdataAccess。ExecuteProduct(DELETEFROM〔dbo〕。〔Product〕WHERE〔ProductId〕{productId},null);}summary新增summaryparamnameproduct产品param〔HttpPost(Add)〕publicasyncTaskintAdd(Productproduct){DataAccessdataAccessnewDataAccess();returnawaitdataAccess。ExecuteProduct(INSERTINTO〔Product〕(〔ProductId〕,〔ProductName〕,〔CategoryId〕)VALUES(ProductId,ProductName,CategoryId),product);}summary修改summaryparamnameproduct产品param〔HttpPut(Edit)〕publicasyncTaskintEdit(Productproduct){DataAccessdataAccessnewDataAccess();returnawaitdataAccess。ExecuteProduct(UPDATE〔Product〕SET〔ProductName〕ProductName,〔CategoryId〕CategoryIdWHERE〔ProductId〕{product。ProductId},product);}}
准备好后,我们的项目是这样的:
我们将控制器里面的List方法改为返回静态数据:
运行项目,执行List方法我们得到一些测试数据:
使用这些测试数据,我们进行新增
新增完两条数据后,我们将List方法改回读数据库:
执行List方法:
剩余的修改和删除我就不一一演示了,整个过程非常简单可以动手试试。
Dapper是一个IDbConnection对象的扩展库,增加了非常多的查询和执行命令的方法:
大家可以根据自己的需求选择其中的方法。
作为一个高性能的ORM其使用者也是非常多,为了弥补需要手写sql的缺点,社区内有非常多的扩展库比如:DapperExtensions等可以实现无sql化。
华山之旅生活像一串明亮的珍珠,每一颗珍珠都是美好的回忆。我的生活,一转眼,已经过去了十二年了,在这十二年中,有一件事让我记忆犹新,也是让我最难忘的一件事,则是我和爷爷爬华山的经历……
回顾经典那些不能遗忘的篮球鞋阿迪达斯ProModel2G阿迪达斯ProModel2G他强任他强,老子尼克杨!这双最常出现在尼克杨脚上的经典阿迪贝壳头就是ProModel2G。外观方面,经典的贝壳头设计,复古分打满,……
得了癌症就与长寿无缘?并非如此,这几点做好了照样可以长寿有人检查出癌症后,几个月就去世了,而有人确诊癌症后,却依然活了好多年,甚至有些人的癌症完全治愈了,并没有影响到寿命的长短。其实人寿命的长短与多方面因素都会有关系,包括自己……
4连败跌出前12!CBA大黑马又输了,西热神奇不再,季后赛悬北京时间3月20日,CBA常规赛继续进行,同曦主场迎战广州,广州在上半场压制同曦,取得11分领先。同曦在末节一度追到只差1分,不过还是功亏一篑,广州10195战胜同曦,拿到本赛……
2022平安夜暖心文案平安夜又称圣诞夜,即圣诞前夕(12月24日),在大部分基督教会中是圣诞节日的一部分。1。平安喜乐,得偿所愿。2。钟声响,祥瑞添,平安夜,道平安。3。平安夜里盼……
xrOS浮出水面,苹果寻找下一个iPhone早在2015年,网上就传出了苹果ARVR头显设备立项的消息,转眼间7年时间过去了,期间其他厂商陆续发布了多款ARVR头显设备,苹果却始终没有动静。直到2022年,彭博社、……
王维寒山,皆我旅伴早上醒来,用一分钟时间列出了今年线路,如下:三月访王维终南山四月访寒山天台山五月禅宗行脚九岭山五月访唐陵关中六月访沈从文湘西渝东六月访碑石冀……
追星成功!王皓妻儿追星谷爱凌,18岁天才少女腹肌太抢镜随着谷爱凌在北京冬奥会上成功为中国赢得了两枚金牌和一枚银牌后,这个18岁的女孩成为了国家偶像人物,名气的增加带来了价值的增长。谷爱凌几乎没有多少空闲时间,几乎每隔三天就会有一次……
丹顶鹤梦幻冰雪王国开始采冰啦12月11日,齐齐哈尔也迎来了采冰季。在广阔的嫩江冰面,冬季项目的采冰活动也正式拉开了帷幕。今年,齐齐哈尔市会展中心广场,又为大家带来了新奇好玩的冰雪项目丹顶鹤梦幻冰雪王国!……
疑似荣耀X40i渲染图曝光,相机模组形状类87月2日消息,网上传一张荣耀新机的渲染图,有消息称是荣耀x40i,定位低端,或将于7月份中后旬发布。从渲染图看,新机的整体设计风格略显简约,该新机采用后置双摄,两个摄像头……
马化腾为什么你们都放弃了QQ等级?众所周知,在微信火之前,QQ才是人民普遍用的互联网社交工具。虽然QQ现在已经衰落,但是对于大多数人来说,QQ依然乘载了我们的青春。QQ当年也很火爆,其中的每一项功能都堪称经典,……
什么是对?什么是错?在不断的电视节目冲击我的视线,我总会被所谓的好人坏人所吸引,我也会不断地询问自己,究竟什么是对什么又是错,对与错的分辨是什么?杨绛先生说无论什么关系,情分被消耗殆尽,缘分……