Dapatkah saya menggunakan inti kerangka entitas dengan mysql?

Entity Framework (EF) Core adalah object-relation mapper O/RM untuk pemetaan entitas dengan objek database. Selain itu, EF Core menyediakan fungsi yang mudah digunakan sehingga tidak perlu menulis kode untuk mengakses data apa pun. . NET EF juga menyediakan alat baris perintah untuk mengimplementasikan kode terlebih dahulu daripada pendekatan database pertama



Apa itu Kode Pertama?


Dengan pendekatan Kode Pertama Anda dapat membuat entitas atau model dalam kode Anda. Berbagai atribut dan konfigurasi menentukan hubungan dan kunci dalam database. Setelah model ditentukan dan dikonfigurasi, kami dapat memigrasikannya ke database menggunakan alat cli framework entitas

Untuk lebih memahami kode, pendekatan pertama selalu lebih baik untuk memiliki contoh praktis. Kami akan membuat dua entitas Pengguna & Pekerjaan. Pengguna akan memiliki Id kunci primer dan FirstName sebagai string. Entitas pekerjaan akan memiliki Id kunci utama, Nama sebagai string dan UserId sebagai kunci asing untuk entitas Pengguna


Prasyarat


Sebelum kita mulai, kita memerlukan server MySQL yang berjalan secara lokal di port 3306. Memberikan instruksi tentang cara menginstal MySQL akan berada di luar jangkauan, tetapi ada banyak tutorial yang tersedia untuk membantu Anda. Saat ini tidak perlu membuat database atau tabel baru. Hanya memiliki server MySQL yang berjalan sudah cukup. Kami juga memerlukan klien MySQL untuk menambahkan beberapa data nanti. Anda dapat menggunakan DBeaver

Menyiapkan Proyek


Untuk memulai instal. BERSIH 6. 0 SDK jika belum diinstal. Jalankan perintah di bawah ini untuk membuat aplikasi dotnet baru


dotnet new webapi --name dotnet 


Itu akan membuat yang baru. proyek .net dengan pengontrol dan beberapa file lainnya. Untuk mendukung koneksi ke MySQL kita perlu menambahkan paket nuget. Kami juga akan menambahkan Microsoft. EntityFrameworkCore yang pada dasarnya adalah ORM untuk menghubungkan ke database. Untuk melakukannya, jalankan perintah di bawah ini dalam proyek dotnet yang baru dibuat

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 
_


Karena kami tidak lagi memerlukan Prakiraan Cuaca. cs menghapusnya. Sebagai gantinya, buat dua entitas lain di Job. cs & Pengguna. cs seperti di bawah ini

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; }
} 


Kami juga memerlukan subkelas DbContext untuk mengakses entitas ini. Buat nama file MySQLDBContext. cs dan tambahkan konten di bawah ini

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) { }
} 
_


Kami ingin mengkonfigurasi. NET untuk menggunakan kelas DbContext ini untuk pemetaan O/RM. Arahkan ke Program Anda. cs dan ganti dengan konten di bawah ini. Catatan. Sejak. BERSIH 6. 0, Mulai. cs file dihapus dan sebagai gantinya Program. cs digunakan untuk semua konfigurasi

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<MySQLDBContext>(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(); 


Karena kami menggunakan Konfigurasi yang mengambil DefaultConnection dari ConnectionStrings, kami harus menambahkannya ke file pengaturan aplikasi kami. Untuk mencapai itu atur isi appsettings. perkembangan. json dan pengaturan aplikasi. file json seperti di bawah ini

{
  "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"  
  } 
} 
_


Selanjutnya kita akan membuat api GET yang mengembalikan daftar objek Job di database. Untuk melakukannya hapus WeatherForecastController. cs dan tambahkan UserController. cs dengan konten di bawah ini

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());  
        } 
    }
} 


Kita semua mengatur kode-bijaksana. Tapi kita masih perlu menyiapkan database kita. Untuk melakukannya, kami akan membuat tabel Pengguna dan Pekerjaan di database aplikasi super kami


Alat .NET EF


.NET's Entity Framework Core menyediakan cara yang sangat nyaman untuk mencapainya. Pertama instal alat dotnet-ef cli dengan menjalankan perintah di bawah ini

dotnet tool install --global dotnet-ef 
_


Setelah terinstal, kami akan mengkodekan pendekatan pertama dan membuat migrasi entitas kami yang kemudian akan didorong ke database kami

dotnet ef migrations add InitialCreate
dotnet ef database update 
_


Dua pernyataan di atas setelah dijalankan akan membuat database, tabel di dalamnya, dan juga mengatur hubungan antara kedua tabel


Menambahkan Data ke MySQL


Untuk mengambil data dari database, pertama-tama kita perlu menambahkan data dalam tabel. Instal klien MySQL apa pun untuk terhubung ke database. Favorit pribadi saya adalah DBeaver. Sekarang, Anda dapat menambahkan data dari DBeaver dengan terlebih dahulu menambahkan koneksi dengan detail seperti Host=localhost, Port=3306, User=root & password=$SuperApp1

Setelah terhubung, navigasikan ke tabel Pengguna dan tambahkan baris dan simpan datanya. Demikian pula, navigasikan ke tabel Pekerjaan, tambahkan baris dan simpan datanya. Basis data kami sudah siap sekarang. Mari kita jalankan proyek kita dan lihat hasilnya


Menyatukan Semuanya


Kembali ke proyek Anda dan jalankan perintah di bawah ini untuk memulai proyek kami

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


Perintah di atas akan memulai proyek Anda dan membuka tautan angkuh di browser. Cukup, buka Job api dan klik Try it out diikuti oleh Execute. Tanggapan yang bagus dengan daftar pekerjaan akan ditampilkan. Karena kita baru saja menambahkan satu Job, hanya satu Job yang dikembalikan seperti yang terlihat di bawah ini

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


Kesimpulan


Untuk menyimpulkan inti kerangka entitas adalah salah satu O/RM terbaik yang pernah saya temui dan bekerja sangat baik dengan banyak database yang berbeda. Menyiapkannya semudah menjalankan beberapa perintah. Migrasi dari entitas ke database sangat lancar

Bisakah Entity Framework Core bekerja dengan MySQL?

MySQL Connector/NET kompatibel dengan beberapa versi Entity Framework Core . Untuk informasi kompatibilitas khusus, lihat Tabel 7. 2, "Versi Konektor/NET dan Dukungan Inti Entity Framework". Contoh berikut menunjukkan proses pembuatan database dari kode yang sudah ada.

Bagaimana cara menghubungkan database MySQL dengan Entity Framework Core?

Anda dapat menguji API secara langsung dengan alat seperti Postman atau menghubungkannya dengan contoh aplikasi Angular atau React yang tersedia. .
Mulai dalam mode debug. .
Tambahkan penyedia database MySQL dari NuGet. .
Tambahkan string koneksi ke pengaturan aplikasi. .
Perbarui Konteks Data untuk Menggunakan MySQL. .
Instal alat dotnet ef. .
Tambahkan paket EF Core Design dari NuGet

Database apa yang didukung inti Entity Framework?

EF Core bekerja dengan banyak database, termasuk Database SQL (on-premises dan Azure), SQLite, MySQL, PostgreSQL, dan Azure Cosmos DB.

Melakukan. NET mendukung MySQL?

Connector/NET mencakup dukungan penuh untuk. Fitur yang disediakan oleh Server MySQL, hingga dan termasuk MySQL 8. 0 seri rilis .