Asp net Core Web API với cơ sở dữ liệu MySQL

Trong bài viết hướng dẫn này, chúng ta sẽ tìm hiểu cách xây dựng web API từ ASP. NET để xử lý các hoạt động CRUD với cơ sở dữ liệu trong MySQL

Mã nguồn. ASP. NET webAPI

tài nguyên cần thiết

Để làm theo từng bước bài viết này hoặc chạy bản demo đi kèm, cần có các công cụ sau đang hoạt động

  • mysql
  • NET SDK
  • Visual Studio 2019/2022
  • Khối lượng công việc phát triển web và ASP. NET cho Visual Studio 2019/2022

Quá trình để làm theo

Trong phần hướng dẫn, chúng ta sẽ có ba phần quan trọng

  1. Xem lại cơ sở dữ liệu chúng tôi sẽ sử dụng
  2. Thiết lập quyền truy cập cơ sở dữ liệu từ ASP. NET thông qua Entity Framework
  3. Đặt trình xử lý và phương thức của chúng cho dịch vụ web

Như một trường hợp nghiên cứu cho hướng dẫn này, dữ liệu người dùng sẽ được xử lý thông qua các hoạt động CRUD (Tạo, Đọc, Cập nhật và Xóa)

1. Cơ sở dữ liệu cho miền ứng dụng

Cơ sở dữ liệu mà chúng ta sẽ sử dụng trong ví dụ này được tạo thành từ một bảng duy nhất được gọi là.

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
4, với các thuộc tính.
Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
5,
Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
6,
Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
7,
Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
8,
Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
9, và
public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
0;

Asp net Core Web API với cơ sở dữ liệu MySQL

Các câu lệnh SQL để tạo bảng

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
4 như sau

________số 8_______

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Rất tốt, với cơ sở dữ liệu được thiết lập, chúng tôi đã có thể bắt đầu triển khai dự án đầu tiên của mình để phát triển các dịch vụ API Rest

2. Thiết lập quyền truy cập cơ sở dữ liệu từ ASP. NET thông qua Entity Framework

ASP. dự án API web NET

Trong Visual Studio, điều đầu tiên chúng ta sẽ làm là tạo một dự án mới kiểu ASP. NET Core Web API

Asp net Core Web API với cơ sở dữ liệu MySQL

Sau đó, trong các bước sau, chúng ta có thể chỉ định Framework

Asp net Core Web API với cơ sở dữ liệu MySQL

Với dự án này, chúng tôi sẽ tạo quyền truy cập vào cơ sở dữ liệu và triển khai bộ điều khiển tương ứng để làm việc với dữ liệu đó và cung cấp API web

Truy cập cơ sở dữ liệu với Entity Framework

Để thiết lập các thực thể thông qua các lớp và kết nối cơ sở dữ liệu, chúng ta có thể sử dụng cách tiếp cận Cơ sở dữ liệu đầu tiên của Entity Framework, cho phép chúng ta giàn giáo từ cơ sở dữ liệu đến dự án, nghĩa là tự động tạo các lớp theo các thực thể được thiết lập trong

Với mục đích này, cần cài đặt ba gói NuGet

  • public partial class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public DateTime EnrollmentDate { get; set; }
    }
    
    2
  • public partial class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public DateTime EnrollmentDate { get; set; }
    }
    
    3
  • public partial class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public DateTime EnrollmentDate { get; set; }
    }
    
    4

Trong trường hợp bạn đang làm việc với SQL Server, gói NuGet cần cài đặt sẽ là.

public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
5

Ghi chú. để tìm trung tâm quản trị của các gói nuGet, chúng ta có thể vào tùy chọn. menu -> dự án -> Quản lý gói NuGet

Asp net Core Web API với cơ sở dữ liệu MySQL

Với việc cài đặt các gói NuGet này, bây giờ chúng ta sẽ mở bảng điều khiển quản lý gói để viết lệnh cho phép chúng ta thực hiện giàn giáo từ cơ sở dữ liệu

Asp net Core Web API với cơ sở dữ liệu MySQL

Chỉ huy

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Kết quả là như sau

Asp net Core Web API với cơ sở dữ liệu MySQL

Ở đây, lớp

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
4 được định nghĩa như sau

public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
7, có cấu hình với cơ sở dữ liệu, có phương thức chính là
public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
8 sẽ giống như thế này

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
  if (!optionsBuilder.IsConfigured)
  { optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=;database=database");
  }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, không phải là điều thích hợp nhất khi chuỗi kết nối tới cơ sở dữ liệu được chỉ định trong phương thức

public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
8. Đối với điều này, trong dự án của chúng tôi, chúng tôi có thể tìm thấy tệp
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
  if (!optionsBuilder.IsConfigured)
  { optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=;database=database");
  }
}
0, trong đó chúng tôi có thể xác định cấu hình này

"AllowedHosts": "*",
"ConnectionStrings": {
  "DefaultConnection": "server=servername;port=portnumber;user=username;password=pass;database=databasename;"
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Sau đó, trong lớp

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
  if (!optionsBuilder.IsConfigured)
  { optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=;database=database");
  }
}
1, chúng tôi sẽ thêm dịch vụ vào lớp
public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
7, và sau đó chúng tôi phải tham chiếu thuộc tính
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
  if (!optionsBuilder.IsConfigured)
  { optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=;database=database");
  }
}
3 được chỉ định trong tệp
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
  if (!optionsBuilder.IsConfigured)
  { optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=;database=database");
  }
}
0

builder.Services.AddEntityFrameworkMySQL()
    .AddDbContext<DBContext>(options =>
    {
        options.UseMySQL(builder.Configuration.GetConnectionString("DefaultConnection"));
    });
                });

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Trong trường hợp này, quay lại lớp của

public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
7, chúng ta xóa chuỗi kết nối được chỉ định trong phương thức
public partial class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}
8. Cuối cùng, chúng ta sẽ có phương thức rỗng

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Với các bước này, chúng ta đã sẵn sàng kết nối và các cấu hình cần thiết để làm việc với cơ sở dữ liệu trong ASP. NET với sự trợ giúp của Entity Framework

3. Đặt bộ điều khiển và phương thức của chúng cho dịch vụ web

Để truyền dữ liệu giữa các quy trình quản lý cơ sở dữ liệu và các quy trình làm việc với các dịch vụ web, nên thiết lập các lớp DTO cho từng thực thể của dự án, trong trường hợp này là một DTO cho thực thể

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
4

Để làm điều này, chúng ta sẽ tạo một thư mục mới trong dự án có tên là DTO và tạo một lớp có tên là

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
  if (!optionsBuilder.IsConfigured)
  { optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=;database=database");
  }
}
8, thuộc tính của lớp này sẽ giống với lớp
Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
4 được xác định trong phần
"AllowedHosts": "*",
"ConnectionStrings": {
  "DefaultConnection": "server=servername;port=portnumber;user=username;password=pass;database=databasename;"
}
0 ở trên

public class UserDTO
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime EnrollmentDate { get; set; }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bộ điều khiển cho API Web

Bây giờ, những gì chúng ta sẽ làm là thêm bộ điều khiển, trong trường hợp này là bộ điều khiển cho người dùng, bộ điều khiển này sẽ cho phép thiết lập các phương thức để thực hiện các thao tác CRUD trên các bảng của cơ sở dữ liệu và hiển thị chúng thông qua API Web. Trên thư mục

"AllowedHosts": "*",
"ConnectionStrings": {
  "DefaultConnection": "server=servername;port=portnumber;user=username;password=pass;database=databasename;"
}
1, chúng tôi sẽ thêm bộ điều khiển có tên là
"AllowedHosts": "*",
"ConnectionStrings": {
  "DefaultConnection": "server=servername;port=portnumber;user=username;password=pass;database=databasename;"
}
2

Asp net Core Web API với cơ sở dữ liệu MySQL

Định nghĩa của clase y su constructor se verá así

[ApiController]
[Route("api/[controller]")]
public class UserController : ControllerBase
{
    private readonly DBContext DBContext;

    public UserController( DBContext DBContext)
    {
        this.DBContext = DBContext;
    }
    ...
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bây giờ, mục tiêu là thực hiện các hoạt động CRUD. Theo nghĩa này, chúng ta sẽ sử dụng các phương thức để truy cập thông tin (Get), để chèn dữ liệu (Post), để sửa đổi (Put) và để xóa bản ghi (Delete)

Sau đây là mã cuối cùng cho mỗi phương pháp

A. Lấy danh sách tất cả người dùng đăng ký

[HttpGet("GetUsers")]
public async Task<ActionResult<List<UserDTO>>> Get()
{
    var List = await DBContext.User.Select(
        s => new UserDTO
        {
            Id = s.Id,
            FirstName = s.FirstName,
            LastName = s.LastName,
            Username = s.Username,
            Password = s.Password,
            EnrollmentDate = s.EnrollmentDate
        }
    ).ToListAsync();

    if (List.Count < 0)
    {
        return NotFound();
    }
    else
    {
        return List;
    }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

B. Lấy dữ liệu của một người dùng cụ thể theo Id của họ

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
0

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

C. Chèn người dùng mới

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
1

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

D. Cập nhật dữ liệu của một người dùng cụ thể

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

E. Xóa người dùng dựa trên Id của họ

Scaffold-DbContext "server=servername;port=portnumber;user=username;password=pass;database=databasename" MySql.EntityFrameworkCore -OutputDir Entities -f
3

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Với các phương pháp này và các bước tiếp theo cho đến thời điểm này, dịch vụ web đã sẵn sàng để chạy

Kiểm tra API web đã triển khai

Để kiểm tra API đã triển khai, chúng tôi có thể sử dụng

"AllowedHosts": "*",
"ConnectionStrings": {
  "DefaultConnection": "server=servername;port=portnumber;user=username;password=pass;database=databasename;"
}
3, một công cụ trực quan cho phép chúng tôi tương tác với các phương thức dịch vụ của mình và công cụ đó đã được tích hợp vào ASP của chúng tôi. dự án NET

Để thử nghiệm, chúng ta cần xây dựng và chạy ứng dụng

Asp net Core Web API với cơ sở dữ liệu MySQL

Tiếp theo, chúng ta có thể thấy giao diện Swagger để chúng ta có thể thực hiện các bài kiểm tra tương ứng theo các phương thức được xác định trong bộ điều khiển của chúng ta và theo cách tương tác

Asp net Core Web API với cơ sở dữ liệu MySQL

Vì đây là dịch vụ RestFul, chúng tôi có thể sử dụng bất kỳ chương trình hoặc ứng dụng nào khác để sử dụng các dịch vụ này. Ví dụ, ở đây chúng ta có thể thấy lệnh gọi phương thức

"AllowedHosts": "*",
"ConnectionStrings": {
  "DefaultConnection": "server=servername;port=portnumber;user=username;password=pass;database=databasename;"
}
4 từ công cụ Postman

Asp net Core Web API với cơ sở dữ liệu MySQL

Tiếp theo là gì?

Với hướng dẫn này, chúng ta đã học từng bước cách triển khai các dịch vụ HTTP xử lý dữ liệu người dùng từ ASP. NET và cách kiểm tra các chức năng này

Mã nguồn cho ví dụ này có thể được xem từ kho lưu trữ sau trên GitHub. ASP. NET web API

Cảm ơn vì đã đọc

Tôi hy vọng bạn thích bài viết. Nếu bạn có bất kỳ câu hỏi hoặc ý tưởng nào trong đầu, rất vui được giao tiếp với bạn và cùng nhau trao đổi kiến ​​​​thức với nhau

Cách kết nối cơ sở dữ liệu MySQL trong. NET lõi Web API?

Cách kết nối với MySQL từ. .
Cài đặt MySqlConnector. Đầu tiên, cài đặt gói MySqlConnector NuGet. .
Chuỗi kết nối. Một chuỗi kết nối điển hình cho MySQL là. Máy chủ=YOURSERVER;User ID=YOURUSERID;Mật khẩu=YOURPASSWORD;Cơ sở dữ liệu=YOURDATABASE. .
Cấu hình dịch vụ (ASP. NET lõi).
Mở và sử dụng kết nối

Tôi có thể sử dụng MySQL với lõi ASP NET không?

NET Core và MySQL đều là công nghệ mã nguồn mở và miễn phí. ASP mới. NET Core có thể chạy trên Linux và trong Bộ chứa Linux và MySQL là một trong những cơ sở dữ liệu dễ dàng nhất để bắt đầu với . Điều này làm cho sự kết hợp của ASP. NET Core và MySQL một sự kết hợp khá hấp dẫn.

Làm cách nào để kết nối cơ sở dữ liệu SQL Server trong asp net Core API?

Bước 1. Mở Visual Studio 2019. .
Bước 2. Mở SQL Server Object Explorer và nhấp vào Thêm máy chủ SQL
Bước 3. Ở đây, chúng tôi có một tùy chọn để chọn từ Máy chủ SQL của máy cục bộ, được kết nối qua mạng và cơ sở dữ liệu Azure SQL. .
Bước 4. Nhập tên dự án và nhấp vào Tạo
Nhấp vào Tạo

Làm cách nào để chèn dữ liệu vào cơ sở dữ liệu bằng API Web trong asp net Core?

Chèn ASP. NET vào cơ sở dữ liệu bằng API Web .
Bước 1 Tạo bảng và thủ tục lưu trữ. .
Bước 2 Tạo ứng dụng web. .
Bước 3 Tạo lớp thuộc tính. .
Bước 4 Thêm lớp Trình điều khiển API Web. .
Bước 5 Tạo lớp kho lưu trữ. .
Bước 6 Tạo phương thức Đăng
Bước 7 Cấu hình ASP. định tuyến Net Web API. .
Bước 8 Gọi phương thức Đăng ký