.NET Entity Frameworkda migratsiyalarni avtomat ishga tushirish

.NET Entity Frameworkda migratsiyalarni avtomat ishga tushirish

.NET Entity Frameworkda migratsiyalarni avtomat ishga tushirish

Ushbu maqolada .NET framework’dagi Entity Framework ORM’da migratsiyalarni avtomat ishga tushirish haqida so’z boradi.

Ba’zi loyihalarda ma’lumotlar omboriga kiritilgan o’zgarishlarni tezkorlik bilan, ya’ni har gal dastur ishga tushganda kiritish talab qilinadi. Demak, hozir shu oddiy lekin juda qiziqarli bo’lgan masalani yechimini ko’rib chiqamiz.

Avvalo Entity Framework haqida qisqacha tanishib olamiz. Entity Framework Core(EF Core) — bu Entity Framework’ning oddiy va yengil ishlaydigan, krossplatformali, ochiq kodli versiyasi hisoblanadi.

Entity Framework yadrosi bizga obyektlar va ma’lumotlar ombori o’rtasidagi vositachi(ORM) sifatida quyidagi imkoniyatlarni beradi:

Bu bizga ma’lumotlar ombori bilan faqatgina .NET’ning obyektlari orqali ishlashni beradi. Bu usul odatda «Code First»(«avval kod») deb atashadi;

Ma’lumotlar ombori bilash ishlash uchun biz yozadigan kodlarga ehtiyojni yuqotadi.

Entity Framework Core bilan ishlashda quyidagi ma’lumotlar omboridan foydalanish mumkin:

MS SQL

PostgreSQL

MySQL

SQLite

InMemory

Dastur ishga tushganda migratsiyalarni ham ishga tushirish

Endi, asosiy ishga o’tamiz. Qilinadigan topshiriqni ikkiga bo’lib olamiz.

  1. Ma’lumotlar ombori kontekstini ro’yxatdan o’tkazish;
  2. Avtomatik migratsiyani ishga tushirish.
Ma’lumotlar ombori kontekstini ro’yxatdan o’tkazish

Entity Framework’da kontekstni DI orqali Program.cs ichida yoki boshqa har qanday IServiceCollection qo’llanilgan joyda ro’yxatdan o’tkazishimiz kerak:

builder.Services.AddDbContext()

Quyida kod qismi keltirilgan. Uni Siz ko’chirib olishingiz va o’zingizning loyihangizdagi Program.cs faylga AppDbContext’ni ro’yxatdan o’tkazish uchun joylashingiz mumkin.

var builder = WebApplication.CreateBuilder(args);
// Xizmatni konteynerga qo'shish
builder.Services.AddDbContext();
...

Tabriklayman, endi Sizning dasturingiz ishga tushganda ma’umotlar ombori bilan bog’langan bo’ladi.

Avtomatik migratsiyani ishga tushirish

Keyingi qadam juda oddiy. Yuqorida ro’yxatdan o’tkazilgan kontekstdan foydalanib migratsiyani ishga tushirishimiz mumkin. Bizda bog’liqliklarni biriktirish(DI) bo’lganligi sababli maxsus joy yaratib, u yerda ma’lumotlar ombori uchun xizmat yaratishimiz mumkin.

U scope.ServiceProvider.GetRequiredService(); bilan yakunlanadi. Uni Siz Program.cs faylni ichida bajarishingiz mumkin.

// Dastur ishga tushganda oxirgi o'zgarishlarni ma'lumotlar omboriga o'tkazish
using (var scope = app.Services.CreateScope())
{
    var dbContext = scope.ServiceProvider
        .GetRequiredService();
    
    // Shu yerda migratsiya chaqiriladi
    dbContext.Database.Migrate();
}

Shu bilan tayyor, dasturni ishga tushirib tekshirib ko’rishingiz mumkin.

Savollar bo’lsa izohlarda qoldirishingiz mumkin.

Web Dasturlash
.NET Entity Frameworkda migratsiyalarni avtomat ishga tushirish