马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

.net Dapper 学习系列(1) ---Dapper入门

[复制链接]
查看2912 | 回复0 | 2019-8-13 19:00:03 | 显示全部楼层 |阅读模式

写在前面

Dapper 是一款轻量级ORM架构。为解决网站访问流量极高而产生的性能题目而构造,主要通过执行TSQL表达式而实现数据库的CQRS。
如果在项目中遇到性能访问题目,选择Dapper作为ORM框架大概是明智之举,当然也可以使用Entity Framework或NHibernate来处理大数据访问及关系映射。

为什么选择Dapper

1.轻量:只有一个文件夹(SqlMapper.cs),编译完成之后只有140K。
2.速度快:Dapper的速度接近于IDataReader,取列表的数据超过了DataTable。是公认速度第二快的小型ORM框架。
3.支持多种数据库:Dapper可以在所有Ado.Net Providers下工作,包括sqlLite、Oracle、MySQL、SQL Server。
4.可以映射一对一、一对多、多对多等各种关系。
5.性能高:通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。

在项目中安装Dapper

说了再多Dapper 如何好,如何快。都不如实践一番。接下来我们在项目中安装并使用Dapper。
第一步:打开 vs 2013 ,文件-->新建-->项目

190041sgwfbbfkk7pmpzff.png

然后,选择空的mvc模板。点击确定,创建一个mvc的项目。

190042zshssx1r4xds66z3.png

第二步:工具-->nuGut程序包管理器-->程序包管理器控制台

190042siijvaphoodshjvz.png

第三步:输入 install-package Dapper, 回车。

190043feqqq74c4vn0u22m.png

额~发现在安装的过程中报错。错误如下:

190044amvfvixi6l7lj0jz.png

分析错误原因是因为我们在安装Dapper的时间没有给指定的版本号,在安装的过程中会默认安装最新版本的Dapper。
所以,我们要降低Dapper 的版本号 可以在 程序包管理器控制台 install-package Dapper 命令后面加上版本号。

例如: PM> Install-Package Dapper -Version 1.50.2 回车即可。

190045shhppvh34th3szs1.png

在项目中使用Dapper

第1步:打开sqlserver2012数据库创建 DomeDb数据库,然后创建 用户表(sys_user)并插入底子数据。

  1. <code>//创建用户表
  2. create table [sys_user]
  3. (
  4. [user_id] [uniqueidentifier] primary key default(newid()) not null,
  5. [u_id] [nvarchar](20) null,
  6. [u_password] [nchar](50) null,
  7. [gender] [nchar](1) null,
  8. [user_name] [nvarchar](50) null,
  9. [creation_time] [datetime] default(getdate()) null,
  10. [status] [nvarchar](1) null,
  11. )
  12. //插入测试数据
  13. insert into [sys_user]([u_id],[u_password],[gender],[user_name],[status]) values(&#39;Admin&#39;,&#39;admin&#39;,&#39;m&#39;,&#39;创建管理员&#39;,&#39;y&#39;)
  14. insert into [sys_user]([u_id],[u_password],[gender],[user_name],[status]) values(&#39;User&#39;,&#39;user&#39;,&#39;w&#39;,&#39;用户&#39;,&#39;y&#39;)
  15. insert into [sys_user]([u_id],[u_password],[gender],[user_name],[status]) values(&#39;ZhangSan&#39;,&#39;zhangsan001&#39;,&#39;m&#39;,&#39;张三&#39;,&#39;y&#39;)
  16. insert into [sys_user]([u_id],[u_password],[gender],[user_name],[status]) values(&#39;LiSi&#39;,&#39;LiSi001&#39;,&#39;m&#39;,&#39;李思&#39;,&#39;n&#39;)
  17. //查询结果
  18. select * from [sys_user]
  19. </code>
复制代码

结果如图:

190045i62ke28yfxtt5mw0.png

第2步:打开Web.config 。编写连接字符串。

  1. <code><connectionStrings>
  2. <add name="lc" connectionString="server=.;uid=sa;pwd=123456;database=DemoDb;" providerName="System.Data.SqlClient" />
  3. </connectionStrings>
  4. </code>
复制代码

第3步:新建空的控制器,命名HomeController。

声明静态的连接字符串,用来连接数据库。

  1. <code>private static string connstr_sqlserver = ConfigurationManager.ConnectionStrings["lc"].ToString();
  2. </code>
复制代码

第4步:在Model文件夹添加sys_user_sqlserver类。

  1. <code>public class sys_user_sqlserver
  2. {
  3. [DisplayName("用户主键")]
  4. public Guid user_id { get; set; }
  5. [DisplayName("登录名称")]
  6. public string u_id { get; set; }
  7. [DisplayName("登录密码")]
  8. public string u_password { get; set; }
  9. [DisplayName("性别")]
  10. public string gender { get; set; }
  11. [DisplayName("姓名")]
  12. public string user_name { get; set; }
  13. [DisplayName("创建时间")]
  14. public string creation_time { get; set; }
  15. [DisplayName("状态")]
  16. public string status { get; set; }
  17. }
  18. </code>
复制代码

第5步:编辑获取数据方法,结果返回Json对象。

  1. <code>[HttpGet]
  2. public JsonResult Get_User_Sqlserver()
  3. {
  4. //1.使用IDbConnection打开连接
  5. using (IDbConnection conn = new SqlConnection(connstr_sqlserver))
  6. {
  7. //2.查询sql
  8. string sql_all = @"select * from [dbo].[sys_user]";
  9. //3.这里可以有两种方式
  10. //方式1:
  11. List<sys_user_sqlserver> u = conn.Query<sys_user_sqlserver>(sql_all).ToList();
  12. //方式2:
  13. //<sys_user> u = SqlMapper.Query<sys_user>(conn, sql_all).ToList();
  14. //4.返回Json对象
  15. return Json(u, JsonRequestBehavior.AllowGet);
  16. }
  17. }</code>
复制代码

第6步:前台页面发起Get请求。

  1. <code>$.get("../Sqlserver/Get_User_Sqlserver", function (msg) { });
  2. </code>
复制代码

显示结果:

190046pftqmmntpz4naq5m.png

至此,我们从零开始完成了一个简单的Dapper的查询显示的实践例子。

在项目中使用Dapper 进行单表增删改数据操作

1.新增数据

后台

  1. <code>[HttpPost]
  2. public int Add_User_SqlServer(sys_user_sqlserver sql_user)
  3. {
  4. int result = 0;
  5. using (IDbConnection conn_sql = new SqlConnection(connstr_sqlserver))
  6. {
  7. string sql_add = @"insert into sys_user(user_id,u_id,u_password,gender,user_name,status)";
  8. sql_add += " values (newid(),@u_id,@u_password,@gender,@user_name,@status)";
  9. result = conn_sql.Execute(sql_add, sql_user);
  10. }
  11. return result;
  12. }
  13. </code>
复制代码

前台

  1. <code>var add_data = { u_id: "user1", u_password: "user1", gender: "w", user_name: "用户1", status: "y" };
  2. $.ajax({
  3. url: "../Sqlserver/Add_User_SqlServer",
  4. type: "post",
  5. dataType: "json",
  6. contentType: "application/json",
  7. data: JSON.stringify(add_data)
  8. }).done(function (msg) { }).fail(function (e) { });
  9. </code>
复制代码

显示结果:
编辑前

190047nh0mmdmrds0dgmaa.png

编辑成功
成功返回1,失败返回0
190047qhd6hq089j1hcyj1.png

编辑后
190048on5an557n57205aa.png

2.根据主键查询记录

后台:

  1. <code>[httpGet]
  2. public JsonResult Query_User_SqlServer(string Id)
  3. {
  4. //1.连接Sqlserver 数据库
  5. using (IDbConnection conn_sql = new SqlConnection(connstr_sqlserver))
  6. {
  7. //2.sql查询语句
  8. string sql_query = @"select * from sys_user where user_id=@user_id";
  9. //3.执行Dapper 中Query()方法查询SingleOrDefault() 数据
  10. sys_user_sqlserver users = conn_sql.Query<sys_user_sqlserver>(sql_query, new { @user_id = Id }).SingleOrDefault();
  11. //4.返回Json对象结果集
  12. return Json(users, JsonRequestBehavior.AllowGet);
  13. }
  14. }</code>
复制代码

前台

  1. <code>$.get("../Sqlserver/Query_User_SqlServer", { id: "d8dae9bd-4664-4b1e-9f86-a4f77a2d316f" }, function (msg) { });</code>
复制代码

显示结果:

190048wjsqq7z1xmztdsmt.png

3.编辑数据

后台:

  1. <code>[HttpPost]
  2. public int Edit_User_SqlServer(sys_user_sqlserver user)
  3. {
  4. //1.声明返回结果
  5. int result = 0;
  6. //2.连接mysql数据库
  7. using (IDbConnection conn = new SqlConnection(connstr_sqlserver))
  8. {
  9. //3.编辑sql编辑语句
  10. string sql_edit = @"update sys_user set u_id=@u_id,u_password=@u_password";
  11. sql_edit += ",gender=@gender,user_name=@user_name,status=@status where user_id=@user_id";
  12. //4.执行Dapper 里 Execute方法 实现编辑数据
  13. result = conn.Execute(sql_edit, user);
  14. }
  15. //5.返回结果集
  16. return result;
  17. }</code>
复制代码

前台

  1. <code>var edit_data = { u_id: "user1", u_password: "user1", gender: "m", user_name: "用户1", status: "y", user_id: "d8dae9bd-4664-4b1e-9f86-a4f77a2d316f" };
  2. $.ajax({
  3. url: "../Sqlserver/Edit_User_SqlServer",
  4. type: "post",
  5. dataType: "json",
  6. contentType: "application/json",
  7. data: JSON.stringify(edit_data)
  8. }).done(function (msg) { }).fail(function (e) { });</code>
复制代码

显示结果:
编辑前

190049oufpmimgg3ssxuu7.png

编译成功
190049xq27zwsvtsvazivh.png

编译后
190050hpko0thpuik1zspl.png

3.删除数据

后台:

  1. <code>[HttpGet]
  2. public int Del_User_Sqlserver(string Id)
  3. {
  4. //1.声明返回的结果
  5. int result = 0;
  6. //2.连接Mysql数据库
  7. using (IDbConnection conn_sql = new SqlConnection(connstr_sqlserver))
  8. {
  9. //3.编辑删除sql语句
  10. string sql_del = @"delete from sys_user where user_id=@user_id";
  11. //4.执行Dapper 中 Execute 方法,实现删除数据操作
  12. result = conn_sql.Execute(sql_del, new { @user_id = Id });
  13. }
  14. //5.返回执行结果
  15. return result;
  16. }
  17. </code>
复制代码

前台

  1. <code>$.get("../Sqlserver/Del_User_Sqlserver", { id: "E90915F7-5724-4735-8474-FD1E226B90D2" }, function (msg) { });</code>
复制代码

显示结果:
编辑前

190050j83683w4ja6aaahz.png

编辑成功
删除成功返回1,删除失败返回0。

190051iqhjpfbqprttffpz.png

编辑后

190052lb2rw9bctz2bbd2t.png

总结

至此,学习并实践了使用Dapper对单表进行基本的数据操作。希望,能对自己同时也对你们有所收获。
好记性不如‘烂笔头’。


来源:https://www.cnblogs.com/ZengJiaLin/p/11301156.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则