.NET Core için bir nesne veritabanı eşleyicisi olan Entity Framework Core, .NET için Entity Framework ORM’nin (nesne-ilişkisel eşleyici) açık kaynaklı, platformlar arası karşılığıdır. EF Core’un dikkate değer özellikleri arasında, veritabanı şemalarınızı güncellemek ve bunların uygulamalarınızın veri modelleriyle senkronize olmasını sağlamak için geçişler gerçekleştirme yeteneği yer alır.
Bu makalede, ASP.NET Core 7 uygulamalarında EF Core geçişlerini kullanmanın temellerini inceleyeceğiz. Bu makalede verilen kod örneklerini kullanabilmeniz için sisteminizde Visual Studio 2022 kurulu olmalıdır. Halihazırda bir kopyanız yoksa, Visual Studio 2022’yi buradan indirin.
Visual Studio 2022’de bir ASP.NET Core Web API projesi oluşturun
Öncelikle Visual Studio 2022’de bir ASP.NET Core 7 projesi oluşturalım. Şu adımları takip edin:
- Visual Studio 2022 IDE’yi başlatın.
- “Yeni proje oluştur”u tıklayın.
- “Yeni proje oluştur” penceresinde, görüntülenen şablonlar listesinden “ASP.NET Core Web API” öğesini seçin.
- Sonrakine tıkla.
- “Yeni projenizi yapılandırın” penceresinde, yeni proje için ad ve konum belirtin.
- İsteğe bağlı olarak, tercihlerinize bağlı olarak “Çözüm ve projeyi aynı dizine yerleştir” onay kutusunu işaretleyin.
- Sonrakine tıkla.
- Bu örnekte minimum API kullanacağımız için, aşağıda gösterilen “Ek Bilgiler” penceresinde “Denetleyicileri kullan…” yazan onay kutusunun işaretini kaldırın. “Kimlik Doğrulama Türü” ayarını “Yok” (varsayılan) olarak bırakın.
- Bu özellikleri burada kullanmayacağımız için “Açık API Desteğini Etkinleştir”, “HTTPS için Yapılandır” ve “Docker’ı Etkinleştir” onay kutularının işaretli olmadığından emin olun.
- Oluştur’a tıklayın.
Aşağıdaki bölümlerde EF Core geçişleriyle çalışmak için bu ASP.NET Core 7 Web API projesini kullanacağız.
EF Core geçişleri nedir?
Yazılım geliştirmede, gereksinimler geliştikçe veri modelinde değişiklik yapmak yaygındır. Bu değişiklikler, yeni tablolar eklemeyi, mevcut tabloları değiştirmeyi veya tabloları tamamen silmeyi içerebilir. Geçişler olmadan, bu değişiklikleri bir veritabanına uygulamak zor ve hataya açık olacaktır.
Geçiş, bir veritabanı şemasındaki değişiklikleri zaman içinde meydana geldikçe yönetme sürecidir. Geçişler, uygulamanızdaki veritabanı şeması ve etki alanı modelinin senkronize olduğundan emin olmanıza yardımcı olur.
Tablolar, dizinler, sütunlar ve ilişkilendirmeler gibi veritabanı öğelerini ekleyerek, ortadan kaldırarak veya değiştirerek veritabanı şemanızı geliştirmek veya değiştirmek için geçişlerden yararlanabilirsiniz. Geliştiriciler geçişleri kullanarak veritabanı şemasındaki değişiklikleri tam olarak günlüğe kaydedebilir, bu değişiklikleri iyi organize edilmiş bir şekilde uygulayabilir ve gerekirse tüm değişiklikleri veya düzenlemeleri geri alabilir.
Geçişlerin EF Core’da varsayılan olarak etkinleştirildiğini unutmayın. Paket Yöneticisi Konsolu aracılığıyla Visual Studio içinden veya EF Core CLI komutlarını çalıştırmak için bir komut satırı aracı kullanarak geçişlerle çalışabilirsiniz.
EF Core NuGet paketlerini kurun
Yukarıda oluşturduğumuz aynı ASP.NET Core 7 Web API projesinde bir sınıf kitaplığı projesi oluşturun. EF Core geçişlerini uygulamak için bu sınıf kitaplığı projesini kullanacağız. İlk projenin EFMigrationsDemo olarak adlandırıldığını varsayarak, sınıf kitaplığı projesini EFMigrationsDemo.Data olarak adlandırın.
Bu sırada, Çözüm Gezgininiz aşağıdaki Şekil 1 gibi görünecektir.
Şekil 1: Projemizin başındaki Solution Explorer penceresi.
Şimdi, aşağıdaki üç NuGet paketini EFMigrationsDemo.Data projesine kurun.
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Ardından, geçişlerin başarılı bir şekilde çalışacağından emin olmak için başlangıç projesi EFMigrationsDemo’ya aşağıdaki NuGet paketini kurun.
Microsoft.EntityFrameworkCore.Design
ASP.NET Core’da bir model sınıfı oluşturun
EFMigrationsDemo.Data projenizde Author.cs adlı yeni bir dosya oluşturun ve aşağıdaki kodu girin.
using System.ComponentModel.DataAnnotations; namespace EFMigrationsDemo.Data { public partial class Author { [Key] public int Id { get; set; } public string FirstName { get; set; } public string Address { get; set; } public string Email { get; set; } public string Phone { get; set; } } }
ASP.NET Core’da veri bağlamını oluşturma
EFMigrationsDemo.Data projesinde EFMigrationsDemoDBContext.cs adlı yeni bir .cs dosyası oluşturun ve içine aşağıdaki kodu girin.
using Microsoft.EntityFrameworkCore; namespace EFMigrationsDemo.Data { public partial class EFMigrationsDemoDBContext : DbContext { public EFMigrationsDemoDBContext(DbContextOptions <EFMigrationsDemoDBContext> options) : base(options) { } public virtual DbSet<Author> Author { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Author>(entity => { entity.HasKey(k => k.Id); }); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); } }
EF Core kullanarak geçiş oluşturma
Geçiş oluşturmak için NuGet Paket Yöneticisi’nde Geçiş Ekle komutunu kullanmalısınız. Örneğin, Paket Yöneticisi Konsolunda MyDemoMigration adlı yeni bir geçiş oluşturmak için aşağıdaki komutu yürütün.
Add-Migration MyDemoMigration
Alternatif olarak, dotnet CLI’de aşağıdaki komutu yürütebilirsiniz.
dotnet ef migrations add MyDemoMigration
Bu, veri modelinizdeki değişiklikleri temsil eden kod da dahil olmak üzere projenizin Geçişler klasöründe yeni bir geçiş dosyası oluşturacaktır. Ortaya çıkan kodu (bkz. Şekil 2) inceleyerek amaçladığınız revizyonları temsil ettiğini doğrulayabilir ve gerekli ayarlamaları yapabilirsiniz.
Şekil 2: Otomatik oluşturulan Geçiş dosyası.
EF Core kullanarak taşımayı uygulayın
Veritabanına geçiş uygulamak için geçişi zaten oluşturmuş olmanız gerekir. Ardından, değişiklikleri veritabanınıza uygulamak için Paket Yöneticisi Konsolunda Veritabanını Güncelle komutunu kullanın. Aşağıdaki kod parçacığı, en yeni geçişi veritabanına nasıl uygulayabileceğinizi gösterir.
Update-Database
Alternatif olarak, aşağıdaki dotnet CLI komutunu kullanabilirsiniz.
dotnet ef database update
Bu, şemayı veri modelinizle senkronize hale getirerek, bekleyen tüm veritabanı geçişlerini uygulayacaktır.
Şekil 3, bu komut çalıştırıldıktan sonra oluşturulan veri tabanını ve tabloları göstermektedir.
Şekil 3: Database-Update komutunu çalıştırdıktan sonra veritabanı ve nesneleri.
EF Core kullanarak taşımayı kaldırma
Son taşıma işlemini geri almanız gerekirse, Remove-Migration
Paket Yöneticisi Konsolu’ndaki komut veya dotnet ef migrations remove
terminalde komut. Örneğin, en son uygulanan taşımayı silmek için Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırabilirsiniz.
Remove-Migration
Veya aşağıdaki dotnet CLI komutunu çalıştırabilirsiniz.
dotnet ef migrations remove
bu Remove-Migration
komut, son uygulanan taşımayı kaldırmada ustadır ve veritabanı şemasını önceki geçişle eşleşecek şekilde günceller. Başka bir deyişle, komut, projenin Migrations klasöründen en son taşımayı silecek ve veritabanı şemasını ondan önceki taşımayı yansıtacak şekilde değiştirecektir.
EF Core kullanarak bir taşıma işlemini geri alın
Veritabanınızda yapılan değişiklikleri genellikle daha önceki bir geçişe geri döndürmeniz gerekebilir. Veritabanını önceki bir duruma güncellemek için aşağıdaki sözdizimini kullanabilirsiniz.
update-database <migration name>
Bu nedenle, veritabanında yapılan değişiklikleri MyInitialMigration adlı geçişe geri döndürmek için aşağıdaki komutu kullanırsınız.
Update-database MyInitialMigration
Alternatif olarak, aşağıdaki dotnet CLI komutunu kullanabilirsiniz.
dotnet ef database update MyInitialMigration
Geçişler, geliştiricilerin veritabanı şeması değişikliklerini organize ve verimli bir şekilde işlemesini sağlayan, EF Core’un temel bir bileşenidir. Geçişleri kullanarak, gerektiğinde değişiklikleri veritabanı şemanıza uygulayabilir, gerektiğinde bu değişiklikleri geri alabilir ve zaman içinde veritabanı şemasındaki değişiklikleri izleyebilirsiniz.
Telif hakkı © 2023 IDG Communications, Inc.
Kaynak : https://www.infoworld.com/article/3691114/how-to-work-with-ef-core-migrations-in-aspnet-core.html#tk.rss_all