Khung thực thể MySQL Visual Studio 2022
Entity Framework (EF) Core là một O/RM ánh xạ quan hệ đối tượng để ánh xạ các thực thể với các đối tượng cơ sở dữ liệu. Ngoài ra, EF Core cung cấp các chức năng dễ sử dụng giúp loại bỏ nhu cầu viết mã để truy cập bất kỳ dữ liệu nào. . NET EF cũng cung cấp các công cụ dòng lệnh để triển khai mã trước thay vì cách tiếp cận cơ sở dữ liệu trước
Show
Mã đầu tiên là gì?Với cách tiếp cận Code First, bạn có thể tạo các thực thể hoặc mô hình trong mã của mình. Các thuộc tính và cấu hình khác nhau xác định các mối quan hệ và khóa trong cơ sở dữ liệu. Khi các mô hình được xác định và định cấu hình, chúng tôi có thể di chuyển chúng sang cơ sở dữ liệu bằng các công cụ cli của khung thực thể Để hiểu rõ hơn về mã, cách tiếp cận đầu tiên luôn tốt hơn là có một ví dụ thực tế. Chúng tôi sẽ tạo hai thực thể Người dùng & Công việc. Người dùng sẽ có khóa chính Id và FirstName dưới dạng chuỗi. Thực thể công việc sẽ có Id khóa chính, Tên dưới dạng chuỗi và UserId làm khóa ngoại đối với thực thể Người dùng điều kiện tiên quyếtTrước khi bắt đầu, chúng tôi sẽ cần một máy chủ MySQL chạy cục bộ trên cổng 3306. Cung cấp hướng dẫn về cách cài đặt MySQL sẽ nằm ngoài phạm vi, nhưng có rất nhiều hướng dẫn sẵn có để giúp bạn. Tại thời điểm này, không cần tạo cơ sở dữ liệu hoặc bảng mới. Chỉ cần có một máy chủ MySQL đang chạy là đủ. Chúng tôi cũng sẽ cần một ứng dụng khách MySQL để thêm một số dữ liệu sau này. Bạn có thể sử dụng DBeaver Thiết lập dự ánĐể bắt đầu cài đặt. MẠNG 6. 0 SDK nếu chưa được cài đặt. Bắn lệnh dưới đây để tạo một ứng dụng dotnet mới dotnet new webapi --name dotnet Nó sẽ tạo ra một cái mới. dự án mạng với bộ điều khiển và một vài tệp khác. Để hỗ trợ kết nối với MySQL, chúng ta cần thêm gói nuget. Chúng tôi cũng sẽ thêm Microsoft. EntityFrameworkCore về cơ bản là một ORM để kết nối với cơ sở dữ liệu. Để làm như vậy, hãy thực hiện các lệnh bên dưới trong dự án dotnet mới được tạo dotnet add package Pomelo.EntityFrameworkCore.MySql --version 6.0.1
dotnet add package Microsoft.EntityFrameworkCore --version 6.0.4
dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.4 Vì chúng tôi không còn yêu cầu Dự báo thời tiết. tập tin cs loại bỏ nó. Thay vào đó, hãy tạo hai thực thể khác trong Công việc. cs & Người dùng. cs như dưới đây using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace dotnet;
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string FirstName { get; set; }
}
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace dotnet;
public class Job
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
} Chúng tôi cũng sẽ cần một lớp con DbContext để truy cập các thực thể này. Tạo tên tệp MySQLDBContext. cs và thêm nội dung bên dưới using Microsoft.EntityFrameworkCore;
namespace dotnet;
public class MySQLDBContext : DbContext
{
public DbSet<User> User { get; set; }
public DbSet<Job> Job { get; set; }
public MySQLDBContext(DbContextOptions<MySQLDBContext> options) : base(options) { }
} Chúng tôi muốn cấu hình. NET để sử dụng lớp DbContext này cho ánh xạ O/RM. Điều hướng đến Chương trình của bạn. cs và thay thế bằng nội dung bên dưới. Ghi chú. Từ. MẠNG 6. 0, khởi động. cs bị xóa và thay vào đó là Chương trình. cs được sử dụng cho tất cả các cấu hình using dotnet;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddDbContext Vì chúng tôi đang sử dụng Cấu hình tìm nạp Kết nối mặc định từ Chuỗi kết nối, chúng tôi sẽ phải thêm nó vào tệp cài đặt ứng dụng của mình. Để đạt được điều đó, hãy đặt nội dung của cài đặt ứng dụng. phát triển. json và cài đặt ứng dụng. các tệp json như bên dưới {
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "server=localhost; port=3306; database=super-app; user=root; password=$SuperApp1; Persist Security Info=False; Connect Timeout=300"
}
} Tiếp theo, chúng ta sẽ tạo api GET trả về danh sách các đối tượng Công việc trong cơ sở dữ liệu. Để làm như vậy, hãy xóa WeatherForecastController. cs và thêm một UserController. tệp cs có nội dung bên dưới using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace dotnet.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class JobController : Controller
{
private MySQLDBContext _dbContext;
public JobController(MySQLDBContext context)
{
_dbContext = context;
}
[HttpGet]
public IList<Job> Get()
{
return (this._dbContext.Job.Include(x => x.User).ToList());
}
}
} Tất cả chúng ta đều thiết lập mã khôn ngoan. Nhưng chúng tôi vẫn cần thiết lập cơ sở dữ liệu của mình. Để làm như vậy, chúng tôi sẽ tạo bảng Người dùng và Công việc trong cơ sở dữ liệu siêu ứng dụng của chúng tôi Công cụ NET EFNET's Entity Framework Core cung cấp một cách rất thuận tiện để đạt được nó. Trước tiên hãy cài đặt công cụ dotnet-ef cli bằng cách thực hiện lệnh bên dưới ________số 8_______Sau khi cài đặt, chúng tôi sẽ viết mã cách tiếp cận đầu tiên và tạo quá trình di chuyển các thực thể, sau đó sẽ được đẩy vào cơ sở dữ liệu của chúng tôi dotnet ef migrations add InitialCreate
dotnet ef database update Hai câu lệnh trên sau khi được thực thi sẽ tạo cơ sở dữ liệu, các bảng bên trong và cũng thiết lập mối quan hệ giữa hai bảng Thêm dữ liệu vào MySQLĐể lấy dữ liệu từ cơ sở dữ liệu, trước tiên chúng ta cần thêm dữ liệu vào các bảng. Cài đặt bất kỳ máy khách MySQL nào để kết nối với cơ sở dữ liệu. Yêu thích cá nhân của tôi là DBeaver. Bây giờ, bạn có thể thêm dữ liệu từ DBeaver bằng cách trước tiên thêm một kết nối với các chi tiết như Host=localhost, Port=3306, User=root & password=$SuperApp1 Sau khi kết nối, điều hướng đến bảng Người dùng và thêm một hàng và lưu dữ liệu. Tương tự, điều hướng đến bảng Công việc, thêm một hàng và lưu dữ liệu. Cơ sở dữ liệu của chúng tôi đã sẵn sàng. Hãy chạy dự án của chúng tôi và xem kết quả Đặt mọi thứ lại với nhauQuay trở lại dự án của bạn và chạy lệnh dưới đây để bắt đầu dự án của chúng tôi dotnet add package Pomelo.EntityFrameworkCore.MySql --version 6.0.1
dotnet add package Microsoft.EntityFrameworkCore --version 6.0.4
dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.4 0Lệnh trên sẽ bắt đầu dự án của bạn và mở một liên kết vênh trong trình duyệt. Chỉ cần mở Job api và nhấp vào Dùng thử, sau đó là Thực thi. Một phản hồi tốt đẹp với một danh sách các công việc sẽ được hiển thị. Vì chúng tôi vừa thêm một Công việc nên chỉ có một Công việc được trả về như bên dưới dotnet add package Pomelo.EntityFrameworkCore.MySql --version 6.0.1
dotnet add package Microsoft.EntityFrameworkCore --version 6.0.4
dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.4 1Phần kết luậnĐể kết luận, lõi khung thực thể là một trong những O/RM tốt nhất tôi từng gặp và hoạt động rất tốt với nhiều cơ sở dữ liệu khác nhau. Thiết lập nó dễ dàng như thực hiện một vài lệnh. Quá trình di chuyển từ thực thể sang cơ sở dữ liệu siêu mượt mà
|