一、什么是Dapper?

Dapper是一款轻量级的ORM,用于在程序中对数据库进行增删改查操作。

二、Dapper有什么特点?

1、配置简单。Dapper是开源的,可以在项目中添加cs类文件进行引用,也可以直接引用dll。

2、使用方便。增删改查操作非常简单,大大减少代码量。

3、高性能。执行效率接近原生的ADO.NET,更是远远超过EF框架。

ab748aeda45f0ac71609128a10c33316.png

三、在项目中引入Dapper

本例使用NuGet程序包安装。在Visual Studio中新建ASP.NET MVC项目,菜单“工具”-“NuGet包管理器”-“管理解决方案的NuGet程序包”。

a777be03f12c67ef14eb1706136056d3.png

输入关键字“Dapper”进行搜索,找到后安装 到项目中。

10089b7455bda0a8588405e2a85eb779.png

此时解决方案的”引用”中可以看到Dapper已经引用进来。

e3cee13a024047bb2af9a0b6e9d8a816.png

需要说明的是,网上有很多基于Dapper的扩展类及NuGet包,可根据需要选择使用。

四、创建表结构

本例使用MS SQL Server数据库,Dapper还支持mysql、oracle等。

执行下述脚本生成表[Users]并插入2条记录。

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Users](

[UserID] [int] IDENTITY(1,1) NOT NULL,

[UserName] [varchar](50) NULL,

[Email] [varchar](100) NULL,

[Address] [varchar](100) NULL,

CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED

(

[UserID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

INSERT [dbo].[Users] ([UserName], [Email], [Address]) VALUES (N'张三', N'aaa@aaa.com', N'地址111')

GO

INSERT [dbo].[Users] ([UserName], [Email], [Address]) VALUES (N'李四', N'bbb@bbb.com', N'地址222')

GO

表[Users]共有4个字段,分别是int型的自增字段[UserID],varchar型的[UserName]、[Email]和[Address]。

五、创建Model

namespace DapperTest.Models

{

public class Users

{

public int UserID { get; set; }

public string UserName { get; set; }

public string Email { get; set; }

public string Address { get; set; }

}

}

六、数据查询操作

首先,将数据库连接字符串放在web.config中的配置节中。

控制器中查询数据库所有记录并返回到前台View层:

public ActionResult Index()

{

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))

{

var list = db.Query("Select * From Users").ToList();

return View(list);

}

}

View层通过循环展示数据:

UserNameEmailAddress

@{ foreach (var item in Model)

{

@item.UserName@item.Email@item.Address

}

}

运行后效果:

56350ffc4f01e9123e360ff2920cecf0.png

看得出,代码非常简洁,核心代码就是“db.Query("Select * From Users").ToList();”这一句。

七、数据查询操作扩展--按条件查询

实际项目中列表总是伴随着查询条件展示的,通过组合where条件实现查询功能。最终运行的效果如下:

846819266a4172bcbd7ad6ead8f24fbb.png

首先在view层增加查询输入框和提交按钮,代码如下:

UserName:

UserNameEmailAddress

@{ foreach (var item in Model)

{

@item.UserName@item.Email@item.Address

}

}

控制器代码如下,注意接收Post提交内容:

[HttpPost]

public ActionResult Index(FormCollection collection)

{

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))

{

var list = db.Query("Select * From Users where UserName like @UserName", new

{

UserName = "%" + collection["userName"] + "%"

}).AsList();

return View(list);

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐