.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.
- Ma’lumotlar ombori kontekstini ro’yxatdan o’tkazish;
- 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
// 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