.net Dapper 学习系列(1) ---Dapper入门
<blockquote><h3 id="写在前面">写在前面</h3>
</blockquote>
<p>Dapper 是一款轻量级ORM架构。为解决网站访问流量极高而产生的性能题目而构造,主要通过执行TSQL表达式而实现数据库的CQRS。<br />
如果在项目中遇到性能访问题目,选择Dapper作为ORM框架大概是明智之举,当然也可以使用Entity Framework或NHibernate来处理大数据访问及关系映射。</p>
<blockquote>
<h3 id="为什么选择dapper">为什么选择Dapper</h3>
</blockquote>
<p>1.轻量:只有一个文件夹(SqlMapper.cs),编译完成之后只有140K。<br />
2.速度快:Dapper的速度接近于IDataReader,取列表的数据超过了DataTable。是公认速度第二快的小型ORM框架。<br />
3.支持多种数据库:Dapper可以在所有Ado.Net Providers下工作,包括sqlLite、Oracle、MySQL、SQL Server。<br />
4.可以映射一对一、一对多、多对多等各种关系。<br />
5.性能高:通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不错。</p>
<blockquote>
<h3 id="在项目中安装dapper">在项目中安装Dapper</h3>
</blockquote>
<p>说了再多Dapper 如何好,如何快。都不如实践一番。接下来我们在项目中安装并使用Dapper。<br />
第一步:打开 vs 2013 ,文件-->新建-->项目</p>
<p><div align="center"></div></p>
<p>然后,选择空的mvc模板。点击确定,创建一个mvc的项目。</p>
<p><div align="center"></div></p>
<p>第二步:工具-->nuGut程序包管理器-->程序包管理器控制台<br />
<div align="center"></div></p>
<p>第三步:输入 install-package Dapper, 回车。<br />
<div align="center"></div></p>
<p>额~发现在安装的过程中报错。错误如下:<br />
<div align="center"></div></p>
<p>分析错误原因是因为我们在安装Dapper的时间没有给指定的版本号,在安装的过程中会默认安装最新版本的Dapper。<br />
所以,我们要降低Dapper 的版本号 可以在 程序包管理器控制台 install-package Dapper 命令后面加上版本号。</p>
<p>例如: PM> Install-Package Dapper -Version 1.50.2 回车即可。<br />
<div align="center"></div></p>
<blockquote>
<h3 id="在项目中使用dapper">在项目中使用Dapper</h3>
</blockquote>
<p>第1步:打开sqlserver2012数据库创建 DomeDb数据库,然后创建 用户表(sys_user)并插入底子数据。</p>
<code>//创建用户表
create table
(
primary key default(newid()) not null,
(20) null,
(50) null,
(1) null,
(50) null,
default(getdate()) null,
(1) null,
)
//插入测试数据
insert into (,,,,) values('Admin','admin','m','创建管理员','y')
insert into (,,,,) values('User','user','w','用户','y')
insert into (,,,,) values('ZhangSan','zhangsan001','m','张三','y')
insert into (,,,,) values('LiSi','LiSi001','m','李思','n')
//查询结果
select * from
</code>
<p>结果如图:<br />
<div align="center"></div></p>
<p>第2步:打开Web.config 。编写连接字符串。</p>
<code><connectionStrings>
<add name="lc" connectionString="server=.;uid=sa;pwd=123456;database=DemoDb;" providerName="System.Data.SqlClient" />
</connectionStrings>
</code>
<p>第3步:新建空的控制器,命名HomeController。</p>
<p>声明静态的连接字符串,用来连接数据库。</p>
<code>private static string connstr_sqlserver = ConfigurationManager.ConnectionStrings["lc"].ToString();
</code>
<p>第4步:在Model文件夹添加sys_user_sqlserver类。</p>
<code>public class sys_user_sqlserver
{
public Guid user_id { get; set; }
public string u_id { get; set; }
public string u_password { get; set; }
public string gender { get; set; }
public string user_name { get; set; }
public string creation_time { get; set; }
public string status { get; set; }
}
</code>
<p>第5步:编辑获取数据方法,结果返回Json对象。</p>
<code>
public JsonResult Get_User_Sqlserver()
{
//1.使用IDbConnection打开连接
using (IDbConnection conn = new SqlConnection(connstr_sqlserver))
{
//2.查询sql
string sql_all = @"select * from .";
//3.这里可以有两种方式
//方式1:
List<sys_user_sqlserver> u = conn.Query<sys_user_sqlserver>(sql_all).ToList();
//方式2:
//<sys_user> u = SqlMapper.Query<sys_user>(conn, sql_all).ToList();
//4.返回Json对象
return Json(u, JsonRequestBehavior.AllowGet);
}
}</code>
<p>第6步:前台页面发起Get请求。</p>
<code>$.get("../Sqlserver/Get_User_Sqlserver", function (msg) { });
</code>
<p>显示结果:<br />
<div align="center"></div></p>
<p>至此,我们从零开始完成了一个简单的Dapper的查询显示的实践例子。</p>
<blockquote>
<h3 id="在项目中使用dapper-进行单表增删改数据操作">在项目中使用Dapper 进行单表增删改数据操作</h3>
</blockquote>
<h5 id="新增数据">1.新增数据</h5>
<p>后台</p>
<code>
public int Add_User_SqlServer(sys_user_sqlserver sql_user)
{
int result = 0;
using (IDbConnection conn_sql = new SqlConnection(connstr_sqlserver))
{
string sql_add = @"insert into sys_user(user_id,u_id,u_password,gender,user_name,status)";
sql_add += " values (newid(),@u_id,@u_password,@gender,@user_name,@status)";
result = conn_sql.Execute(sql_add, sql_user);
}
return result;
}
</code>
<p>前台</p>
<code>var add_data = { u_id: "user1", u_password: "user1", gender: "w", user_name: "用户1", status: "y" };
$.ajax({
url: "../Sqlserver/Add_User_SqlServer",
type: "post",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(add_data)
}).done(function (msg) { }).fail(function (e) { });
</code>
<p>显示结果:<br />
编辑前<br />
<div align="center"></div><br />
编辑成功<br />
成功返回1,失败返回0<br />
<div align="center"></div><br />
编辑后<br />
<div align="center"></div></p>
<h4 id="根据主键查询记录">2.根据主键查询记录</h4>
<p>后台:</p>
<code>
public JsonResult Query_User_SqlServer(string Id)
{
//1.连接Sqlserver 数据库
using (IDbConnection conn_sql = new SqlConnection(connstr_sqlserver))
{
//2.sql查询语句
string sql_query = @"select * from sys_user where user_id=@user_id";
//3.执行Dapper 中Query()方法查询SingleOrDefault() 数据
sys_user_sqlserver users = conn_sql.Query<sys_user_sqlserver>(sql_query, new { @user_id = Id }).SingleOrDefault();
//4.返回Json对象结果集
return Json(users, JsonRequestBehavior.AllowGet);
}
}</code>
<p>前台</p>
<code>$.get("../Sqlserver/Query_User_SqlServer", { id: "d8dae9bd-4664-4b1e-9f86-a4f77a2d316f" }, function (msg) { });</code>
<p>显示结果:<br />
<div align="center"></div></p>
<h4 id="编辑数据">3.编辑数据</h4>
<p>后台:</p>
<code>
public int Edit_User_SqlServer(sys_user_sqlserver user)
{
//1.声明返回结果
int result = 0;
//2.连接mysql数据库
using (IDbConnection conn = new SqlConnection(connstr_sqlserver))
{
//3.编辑sql编辑语句
string sql_edit = @"updatesys_userset u_id=@u_id,u_password=@u_password";
sql_edit += ",gender=@gender,user_name=@user_name,status=@status where user_id=@user_id";
//4.执行Dapper 里 Execute方法 实现编辑数据
result = conn.Execute(sql_edit, user);
}
//5.返回结果集
return result;
}</code>
<p>前台</p>
<code>var edit_data = { u_id: "user1", u_password: "user1", gender: "m", user_name: "用户1", status: "y", user_id: "d8dae9bd-4664-4b1e-9f86-a4f77a2d316f" };
$.ajax({
url: "../Sqlserver/Edit_User_SqlServer",
type: "post",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(edit_data)
}).done(function (msg) { }).fail(function (e) { });</code>
<p>显示结果:<br />
编辑前<br />
<div align="center"></div><br />
编译成功<br />
<div align="center"></div><br />
编译后<br />
<div align="center"></div></p>
<h4 id="删除数据">3.删除数据</h4>
<p>后台:</p>
<code>
public int Del_User_Sqlserver(string Id)
{
//1.声明返回的结果
int result = 0;
//2.连接Mysql数据库
using (IDbConnection conn_sql = new SqlConnection(connstr_sqlserver))
{
//3.编辑删除sql语句
string sql_del = @"delete from sys_user where user_id=@user_id";
//4.执行Dapper 中 Execute 方法,实现删除数据操作
result = conn_sql.Execute(sql_del, new { @user_id = Id });
}
//5.返回执行结果
return result;
}
</code>
<p>前台</p>
<code>$.get("../Sqlserver/Del_User_Sqlserver", { id: "E90915F7-5724-4735-8474-FD1E226B90D2" }, function (msg) { });</code>
<p>显示结果:<br />
编辑前<br />
<div align="center"></div></p>
<p>编辑成功<br />
删除成功返回1,删除失败返回0。<br />
<div align="center"></div></p>
<p>编辑后<br />
<div align="center"></div></p>
<blockquote>
<h3 id="总结">总结</h3>
</blockquote>
<p>至此,学习并实践了使用Dapper对单表进行基本的数据操作。希望,能对自己同时也对你们有所收获。<br />
好记性不如‘烂笔头’。</p><br>来源:<a href="https://www.cnblogs.com/ZengJiaLin/p/11301156.html" target="_blank">https://www.cnblogs.com/ZengJiaLin/p/11301156.html</a><br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]