Bài đăng này cho thấy đi qua các bước để kết nối một. NET 6 sang MySQL bằng cách sử dụng Entity Framework Core và tự động tạo/cập nhật cơ sở dữ liệu MySQL từ mã bằng cách sử dụng di chuyển EF Core
Chúng ta sẽ bắt đầu với một ví dụ. NET 6 CRUD từ một hướng dẫn tôi đã đăng gần đây, nó sử dụng nhà cung cấp db EF Core InMemory theo mặc định để thử nghiệm, chúng tôi sẽ cập nhật nó để kết nối với cơ sở dữ liệu MySQL và chạy di chuyển EF Core để tự động tạo cơ sở dữ liệu và bảng từ mã. Để biết chi tiết đầy đủ về. NET CRUD API xem. MẠNG 6. 0 - Ví dụ và Hướng dẫn API CRUD
Nội dung hướng dẫn
Công cụ cần thiết cho hướng dẫn này
Để làm theo các bước trong hướng dẫn này, bạn sẽ cần những thứ sau
- NET SDK - bao gồm. NET runtime và các công cụ dòng lệnh
- Visual Studio Code - trình chỉnh sửa mã chạy trên Windows, Mac và Linux. Nếu bạn có một trình chỉnh sửa mã ưa thích khác thì cũng tốt thôi
- Tiện ích mở rộng C# cho Visual Studio Code - thêm hỗ trợ cho Mã VS để phát triển. ứng dụng NET
- MySQL - bạn sẽ cần quyền truy cập vào phiên bản máy chủ MySQL đang chạy để API kết nối, nó có thể ở xa [e. g. Azure, AWS, v.v.] hoặc trên máy cục bộ của bạn. Máy chủ cộng đồng có sẵn miễn phí từ https. // nhà phát triển. mysql. com/downloads/mysql/, đảm bảo nó đã được khởi động để API có thể kết nối với nó. Hướng dẫn cài đặt có sẵn tại https. // nhà phát triển. mysql. com/doc/refman/8. 0/vi/đang cài đặt. html
Tải xuống và chạy ví dụ. NET API
Thực hiện theo các bước sau để tải xuống và chạy. NET 6 CRUD API trên máy cục bộ của bạn với cơ sở dữ liệu EF Core InMemory mặc định
- Tải xuống hoặc sao chép mã dự án hướng dẫn từ https. //github. com/cornflourblue/dotnet-6-crud-api
- Bắt đầu api bằng cách chạy
dotnet run
từ dòng lệnh trong thư mục gốc của dự án [nơi WebApi. csproj được đặt], bạn sẽ thấy thông báoNow listening on: //localhost:4000
- Bạn có thể kiểm tra API trực tiếp bằng một công cụ như Postman hoặc kết nối nó với ví dụ hoặc ứng dụng có sẵn
Bắt đầu ở chế độ gỡ lỗi
Bạn cũng có thể khởi động ứng dụng ở chế độ gỡ lỗi trong Mã VS bằng cách mở thư mục gốc của dự án trong Mã VS và nhấn F5 hoặc bằng cách chọn Gỡ lỗi -> Bắt đầu gỡ lỗi từ menu trên cùng, chạy ở chế độ gỡ lỗi cho phép bạn đính kèm các điểm dừng để tạm dừng thực thi và . Để biết hướng dẫn chi tiết bao gồm một video demo ngắn, hãy xem Mã VS +. NET - Gỡ lỗi một. NET Web App trong Visual Studio Code
Cập nhật. NET API để sử dụng MySQL
Thêm nhà cung cấp cơ sở dữ liệu MySQL từ NuGet
Chạy lệnh sau từ thư mục gốc của dự án để cài đặt nhà cung cấp cơ sở dữ liệu EF Core cho MySQL từ NuGet
dotnet add package Pomelo.EntityFrameworkCore.MySql
Thêm chuỗi kết nối vào cài đặt ứng dụng
Mở tệp appsettings.json
và thêm mục nhập "ConnectionStrings"
với mục nhập con cho chuỗi kết nối MySQL [e. g. "WebApiDatabase"
], chuỗi kết nối phải ở định dạng "server=[DB SERVER URL]; database=[DB NAME]; user=[USERNAME]; password=[PASSWORD]"
Khi quá trình di chuyển EF Core tạo cơ sở dữ liệu, giá trị
{
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
0 sẽ là tên của cơ sở dữ liệu được tạo trong MySQLTệp appsettings.json
được cập nhật với chuỗi kết nối sẽ giống như thế này
{
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
Cập nhật bối cảnh dữ liệu để sử dụng MySQL
Lớp
{
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
2 đặt tại {
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
3 được sử dụng để truy cập dữ liệu ứng dụng thông qua Entity Framework. Nó bắt nguồn từ lớp Entity Framework {
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
4 và có thuộc tính công khai {
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
5 để truy cập và quản lý dữ liệu người dùngCập nhật phương pháp
{
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
6 để kết nối với MySQL thay vì cơ sở dữ liệu trong bộ nhớ bằng cách thay thế {
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
7 bằng {
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
8Lớp
{
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
2 được cập nhật sẽ trông như thế nàynamespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
protected readonly IConfiguration Configuration;
public DataContext[IConfiguration configuration]
{
Configuration = configuration;
}
protected override void OnConfiguring[DbContextOptionsBuilder options]
{
// connect to mysql with connection string from app settings
var connectionString = Configuration.GetConnectionString["WebApiDatabase"];
options.UseMySql[connectionString, ServerVersion.AutoDetect[connectionString]];
}
public DbSet Users { get; set; }
}
Tạo cơ sở dữ liệu MySQL từ mã với EF Core Migration
Cài đặt công cụ dotnet ef
Các. NET Entity Framework Core [_______11_______0] được sử dụng để tạo di chuyển EF Core, để cài đặt các công cụ EF Core chạy trên toàn cầu
namespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
protected readonly IConfiguration Configuration;
public DataContext[IConfiguration configuration]
{
Configuration = configuration;
}
protected override void OnConfiguring[DbContextOptionsBuilder options]
{
// connect to mysql with connection string from app settings
var connectionString = Configuration.GetConnectionString["WebApiDatabase"];
options.UseMySql[connectionString, ServerVersion.AutoDetect[connectionString]];
}
public DbSet Users { get; set; }
}
1 hoặc để cập nhật chạy ____11_______2. Để biết thêm thông tin về các công cụ EF Core, hãy xem https. // tài liệu. Microsoft. com/ef/core/cli/dotnetThêm gói EF Core Design từ NuGet
Chạy lệnh sau từ thư mục gốc của dự án để cài đặt gói thiết kế EF Core, nó cung cấp hỗ trợ công cụ dòng lệnh đa nền tảng và được sử dụng để tạo di chuyển EF Core
dotnet add package Microsoft.EntityFrameworkCore.Design
Tạo di chuyển EF Core
Tạo các tệp di chuyển EF Core mới bằng cách chạy lệnh
namespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
protected readonly IConfiguration Configuration;
public DataContext[IConfiguration configuration]
{
Configuration = configuration;
}
protected override void OnConfiguring[DbContextOptionsBuilder options]
{
// connect to mysql with connection string from app settings
var connectionString = Configuration.GetConnectionString["WebApiDatabase"];
options.UseMySql[connectionString, ServerVersion.AutoDetect[connectionString]];
}
public DbSet Users { get; set; }
}
3 từ thư mục gốc của dự án [nơi cài đặt WebApi. csproj], những lần di chuyển này sẽ tạo cơ sở dữ liệu và bảng cho. NET lõi APIThực hiện di chuyển EF Core
Chạy lệnh
namespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
protected readonly IConfiguration Configuration;
public DataContext[IConfiguration configuration]
{
Configuration = configuration;
}
protected override void OnConfiguring[DbContextOptionsBuilder options]
{
// connect to mysql with connection string from app settings
var connectionString = Configuration.GetConnectionString["WebApiDatabase"];
options.UseMySql[connectionString, ServerVersion.AutoDetect[connectionString]];
}
public DbSet Users { get; set; }
}
4 từ thư mục gốc của dự án để thực hiện di chuyển EF Core và tạo cơ sở dữ liệu cũng như bảng trong MySQLKiểm tra MySQL và bây giờ bạn sẽ thấy cơ sở dữ liệu của mình với các bảng
{
"ConnectionStrings": {
"WebApiDatabase": "server=localhost; database=dotnet-5-crud-api; user=testUser; password=testPass123"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
5 và namespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
protected readonly IConfiguration Configuration;
public DataContext[IConfiguration configuration]
{
Configuration = configuration;
}
protected override void OnConfiguring[DbContextOptionsBuilder options]
{
// connect to mysql with connection string from app settings
var connectionString = Configuration.GetConnectionString["WebApiDatabase"];
options.UseMySql[connectionString, ServerVersion.AutoDetect[connectionString]];
}
public DbSet Users { get; set; }
}
6
Khởi động lại. MẠNG 6. 0 API CRUD
Dừng và khởi động lại API bằng lệnh dotnet run
từ thư mục gốc của dự án, bạn sẽ thấy thông báo Now listening on: //localhost:4000
và API bây giờ sẽ được kết nối với MySQL
Đăng ký hoặc theo dõi tôi để cập nhật
Đăng ký kênh YouTube của tôi hoặc theo dõi tôi trên Twitter, Facebook hoặc GitHub để được thông báo khi tôi đăng nội dung mới
Khác với mã hóa
Tôi hiện đang cố gắng đi du lịch vòng quanh nước Úc bằng xe máy với vợ tôi Tina trên một cặp Royal Enfield Himalayan. Bạn có thể theo dõi cuộc phiêu lưu của chúng tôi trên YouTube, Instagram và Facebook