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 Show 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 PrasyaratSebelum 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 ProyekUntuk 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 MySQLUntuk 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 SemuanyaKembali 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 _0Perintah 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 _1KesimpulanUntuk 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
|