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



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ết


Trướ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(options =>
    {
    var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
    options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
    });

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run(); 


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 EF


NET'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 nhau


Quay 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 
0


Lệ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 
1


Phầ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à

Tôi có thể sử dụng Entity Framework với MySQL không?

Entity Framework là tên được đặt cho một tập hợp các công nghệ hỗ trợ phát triển các ứng dụng phần mềm hướng dữ liệu. MySQL Connector/NET hỗ trợ Entity Framework 6. 0 (EF6 hoặc EF 6. 4) và Lõi khung thực thể (Lõi EF) , đây là khung mới nhất hiện có cho.

Làm cách nào để kết nối cơ sở dữ liệu MySQL với Entity Framework MVC?

Đi tới Web => ASP. NET Web Application => Mẫu dự án MVC. Sau khi cài đặt các gói, hãy chuyển đến tệp cấu hình web và thêm chuỗi kết nối có tên DefaultConnection . Đảm bảo rằng bạn đã cài đặt máy chủ MySql trên máy tính cục bộ của mình hoặc đặt chuỗi kết nối cho máy chủ từ xa.

MySQL có tương thích với Visual Studio 2022 không?

Bạn không thể làm việc với MySql nếu sử dụng Visual Studio 2022 . Bạn chỉ có thể sử dụng MySql với Visual Studio 2019.

Làm cách nào để kết nối MySQL với Entity Framework?

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ụ về ứng dụng Angular hoặc React có sẵn. .
Bắt đầu ở chế độ gỡ lỗi. .
Thêm nhà cung cấp cơ sở dữ liệu MySQL từ NuGet. .
Thêm chuỗi kết nối vào cài đặt ứng dụng. .
Cập nhật bối cảnh dữ liệu để sử dụng MySQL. .
Cài đặt công cụ dotnet ef. .
Thêm gói EF Core Design từ NuGet