欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net core 系列之webapi集成Dapper的简单操作教程

程序员文章站 2022-11-27 16:59:00
Dapper也是是一种ORM框架 这里记录下,使用ASP.NET 集成 Dapper 的过程,方便自己查看 至于Dapper的特性以及操作可以参考Dapper官方文档 1.创建数据库相关 在Sql Server 创建一个叫做 DapperDemo 的数据库 再创建一个叫做 Products 的表 脚 ......

dapper也是是一种orm框架

这里记录下,使用asp.net 集成 dapper 的过程,方便自己查看

至于dapper的特性以及操作可以参考dapper官方文档

 

1.创建数据库相关

  • 在sql server 创建一个叫做 dapperdemo 的数据库
  • 再创建一个叫做 products 的表

脚本如下

create table [dbo].[products](
    [productid] [int] identity(1,1) not null,
    [name] [nvarchar](max) null,
    [quantity] [int] null,
    [price] [float] null,
 constraint [pk_products] primary key clustered 
(
    [productid] asc
)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary]
) on [primary] textimage_on [primary]
 
go

 

2.创建一个asp.net web api 项目

  • 文件->新建->项目
  • 选择 asp.net core web 应用 的模板,项目名 dapperdemo
  • 在新的 asp.net core web 应用的页面,选择 api 模板,并确定,不要选择支持docker

 

3.增加model实体

  • 右击项目,新增一个models文件夹
  • 在models文件夹下增加一个类(class),product
public class product
{
    [key]
    public int productid { get; set; }
    public string name { get; set; }
    public int quantity { get; set; }
    public double price { get; set; }
}

 

4.引入dapper nuget包

  • 工具->nuget 包管理器 -> 管理解决方案的 nuget 包程序包
  • 搜索dapper ,并且安装

asp.net core 系列之webapi集成Dapper的简单操作教程

 如下,安装

asp.net core 系列之webapi集成Dapper的简单操作教程

 

也可以使用  程序包管理器控制台 进行安装

install-package dapper

 

5.使用dapper

  dapper的使用需要下面三步:

  • 使用连接字符串( connection string )创建一个 idbconnection 对象
  • 编写你自己的sql 语句
  • 把 sql 语句传给 dapper

 

所以,操作如下

  • 创建一个repository文件夹
  • 在repository文件夹里增加一个名为 productrepository 的class类

代码如下

 1 public class productrepository
 2 {
 3     private string connectionstring;
 4     public productrepository()
 5     {
 6         connectionstring = @"server=localhost;database=dapperdemo;trusted_connection=true;";
 7     }
 8  
 9     public idbconnection connection
10     {
11         get  {
12             return new sqlconnection(connectionstring);
13         }
14     }
15  
16     public void add(product prod)
17     {
18         using (idbconnection dbconnection = connection)
19         {
20             string squery = "insert into products (name, quantity, price)"
21                             + " values(@name, @quantity, @price)";
22             dbconnection.open();
23             dbconnection.execute(squery, prod);
24         }
25     }
26  
27     public ienumerable<product> getall()
28     {
29         using (idbconnection dbconnection = connection)
30         {
31             dbconnection.open();
32             return dbconnection.query<product>("select * from products");
33         }
34     }
35  
36     public product getbyid(int id)
37     {
38         using (idbconnection dbconnection = connection)
39         {
40             string squery = "select * from products"
41                            + " where productid = @id";
42             dbconnection.open();
43             return dbconnection.query<product>(squery, new { id = id }).firstordefault();
44         }
45     }
46  
47     public void delete(int id)
48     {
49         using (idbconnection dbconnection = connection)
50         {
51              string squery = "delete from products"
52                           + " where productid = @id";
53             dbconnection.open();
54             dbconnection.execute(squery, new { id = id });
55         }
56     }
57  
58     public void update(product prod)
59     {
60         using (idbconnection dbconnection = connection)
61         {
62             string squery = "update products set name = @name,"
63                            + " quantity = @quantity, price= @price"
64                            + " where productid = @productid";
65             dbconnection.open();
66             dbconnection.query(squery, prod);
67         }
68     }
69 }

 

这里的连接字符串是直接写在代码里的,可以根据需要自己调整

 

6.创建controller

  • 创建一个名为 productcontroller 的类

代码如下

 1 [route("api/[controller]")]
 2 public class productcontroller : controller
 3 {
 4     private readonly productrepository productrepository;
 5     public productcontroller()
 6     {
 7         productrepository = new productrepository();
 8     }
 9     // get: api/values
10     [httpget]
11     public ienumerable<product> get()
12     {
13         return productrepository.getall();
14     }
15  
16     // get api/values/5
17     [httpget("{id}")]
18     public product get(int id)
19     {
20         return productrepository.getbyid(id);
21     }
22  
23     // post api/values
24     [httppost]
25     public void post([frombody]product prod)
26     {
27         if (modelstate.isvalid)
28             productrepository.add(prod);
29     }
30  
31     // put api/values/5
32     [httpput("{id}")]
33     public void put(int id, [frombody]product prod)
34     {
35         prod.productid = id;
36         if (modelstate.isvalid)
37             productrepository.update(prod);
38     }
39  
40     // delete api/values/5
41     [httpdelete("{id}")]
42     public void delete(int id)
43     {
44         productrepository.delete(id);
45     }
46 }

 

7.运行,验证是否成功

在这之前,可以手动往数据库表里加几条数据,我这里没有加,只是在get方法里打了个断点

在浏览器中输入 https://localhost:44315/api/product

asp.net core 系列之webapi集成Dapper的简单操作教程

 

 因为我数据库里没有数据,这里返回的空的

 

这里做记录方便查看,如有错误,欢迎指正

参考网址:

https://www.talkingdotnet.com/use-dapper-orm-with-asp-net-core/