NET Core ve Entity Framework Core ile Veri Tabanı Yönetimi konusunda, veritabanındaki değişiklikleri yönetmek için kullanabileceğiniz Code First Migrations ve Database First yaklaşımlarını öğreneceksiniz Ayrıca, Entity Framework Core kullanırken performansı artırmaya yönelik stratejiler hakkında bilgi sahibi olabileceksiniz NET Core ise açık kaynak kodlu, taşınabilir, ücretsiz ve kullanımı kolay bir geliştirme platformudur Entity Framework Core ise modern bir nesne yönelimli veri tabanı yönetim çözümüdür ve ASPNET Core, NET Core ve NET Framework ile kullanılabilir

Bu makalede veri tabanı yönetimi konusunda kullanabileceğiniz .NET Core ve Entity Framework Core teknolojileri ele alınmaktadır. .NET Core, Windows, Linux ve macOS işletim sistemleri üzerinde çalışabilen açık kaynaklı, ücretsiz ve taşınabilir bir geliştirme platformudur. Entity Framework Core ise açık kaynaklı bir nesne yönelimli veri tabanı yönetim çözümüdür ve ASP.NET Core, .NET Core ve .NET Framework ile kullanılabilir.
Bu makalede, hem Code First Migrations hem de Database First yaklaşımları kullanılarak veri tabanı yönetimi hakkında bilgiler verilecektir. Code First Migrations, veritabanındaki değişiklikleri yönetmek için kullanılır ve oluşturulması için Package Manager Console veya .NET Core CLI kullanılabilir. Veritabanı bağlantısını kurduktan sonra, migration işlemi U pdate-Database komutu kullanılarak uygulanabilir. Diğer taraftan, Database First yaklaşımı var olan bir veritabanını Entity Framework Core ile yönetmek için kullanılır ve DbContext sınıfı, veritabanı işlemlerini yönetmek için kullanılır.
Entity Framework Core kullanırken, performansı artırmak için birkaç strateji takip edilebilir. Sorguların optimizasyonu, enumerasyonun minimize edilmesi ve veritabanı bağlantı yönetim stratejileri, performansı artırmak için kullanılan stratejiler arasındadır. Bu makalede, bu stratejiler hakkında ayrıntılı bilgi verilecektir.
.NET Core Nedir?
.NET Core, son yıllarda geliştiriciler arasında giderek popüler bir hale gelen, açık kaynak kodlu bir geliştirme platformudur. Hem Windows, hem de diğer işletim sistemleri için kullanılabilen ücretsiz bir platform olan .NET Core, kolay kurulumu ve kullanımı ile dikkat çekmektedir. Ayrıca, taşınabilirlik özelliği ile uygulamaların farklı ortamlarda çalışmasını sağlamaktadır.
.NET Core, birçok programlama dili (C#, F#, VB.NET vb.) ile uyumlu şekilde çalışmaktadır. Platformun bir diğer avantajı, performansı yüksek uygulamalar geliştirmekte yardımcı olmasıdır.
Platform, Microsoft tarafından geliştirilmekte olup, açık kaynaklı olması sayesinde sürekli olarak geliştirme ve güncelleme çalışmaları yapılmaktadır. .NET Core ile birlikte, yeni özellikler ve fonksiyonellikler de sunulmaktadır.
Entity Framework Core Nedir?
Entity Framework Core, modern bir nesne yönelimli veri tabanı yönetim çözümüdür. Bu çözüm, Microsoft tarafından geliştirilmiş olup, .NET Core ve .NET Framework dahil olmak üzere çeşitli platformlarda kullanılabilir. Diğer Microsoft geliştirme araçları ile uyum içerisinde çalışabilir ve bu sayede veri tabanı işlemleri daha kolay hale gelir.
Entity Framework Core, çeşitli özellikleriyle de dikkat çekiyor. Diğer veri tabanı yönetim sistemlerine oranla daha güvenli bir yapıya sahiptir. Ayrıca, açık kaynaklı olması sayesinde geliştiriciler çok daha fazla özelleştirme yapabilirler. ASP.NET Core, .NET Core ve .NET Framework'u destekleyen Entity Framework Core, bu platformların tümünde veri tabanı yönetim çözümü olarak kullanılabilir.
Code First Migrations
Entity Framework Core, veritabanındaki değişiklikleri yönetmek için Code First Migrations özelliğini sunar. Bu özellik, veritabanında yapılacak değişikliklerin kaydedilmesine ve yönetilmesine olanak tanır.
Migrations, veritabanının versiyon kontrolünü yapmak için kullanılır. Bu sayede, veritabanındaki yapısal değişikliklerin geçmişi takip edilebilir ve geri alınabilmesi mümkün hale gelir. Migrations ile veritabanı şeması, kod tarafından yönetilir ve her değişiklik bir migration dosyası ile kaydedilir.
Migration oluşturma işlemi, Package Manager Console veya .NET Core CLI ile yapılabilir. Ardından, veritabanında yapılacak değişiklikler DbContext sınıfı kullanılarak tanımlanır ve migration oluşturma komutu çalıştırılır. Migration dosyası, önceden belirtilen değişikliklerin açıklamalarını içeren bir sınıf dosyası formatında oluşturulur.
Migration dosyasının uygulanması için, Update-Database komutu kullanılır. Bu komut, oluşturulan migration dosyasını veritabanına uygular. Karşılaşılabilecek hatalar için, geri alma (rollback) işlemi de mümkündür.
Migration İşlemini Oluşturma
Migration işlemlerini oluşturmak için, Entity Framework Core'da yer alan Package Manager Console veya .NET Core CLI araçları kullanılabilir. Migration işlemini oluşturmadan önce, DbContext sınıfı ve Entity sınıfları belirlenmeli ve ardından Add-Migration komutu kullanarak yeni bir migration sınıfı oluşturulmalıdır.
Örneğin, Package Manager Console'da projenizde yer alan DbContext sınıfının bulunduğu klasöre gelerek Add-Migration komutu kullanarak migration işlemini oluşturabilirsiniz. Yeni migration dosyasının adını ise açıklayıcı bir şekilde belirleyebilirsiniz. Örneğin, "InitialCreate", "AddProductTable", gibi isimlendirmeler kullanabilirsiniz.
Migration işlemini oluşturduktan sonra, yeni migration dosyası projenize eklenir. Bu dosyada yer alan Up() ve Down() metotları, veritabanında gerçekleşecek değişiklikleri tanımlar. Up() metodu, veritabanına yeni bir tablo eklemek, var olan bir tabloya yeni bir sütun eklemek veya bir kaydı güncellemek gibi işlemleri gerçekleştirebilir. Down() metodunda ise geri alma işlemleri tanımlanır. Örneğin, veritabanından bir tablo silmek gibi.
Migration işlemini oluşturmak için kullanabileceğiniz diğer bir araç ise .NET Core CLI'dır. Bu araçları kullanarak, git gibi sürüm kontrol sistemlerindeki migration dosyalarını da takip edebilirsiniz.
Migration işlemlerini oluştururken, doğru isimlendirmeleri kullanmak ve açıklayıcı yorumlar eklemek önemlidir. Bu sayede, projenizde yeni bir geliştirici eklemek istediğinizde, oluşturduğunuz migration dosyaları daha anlaşılır olacaktır.
Migration İşlemi Uygulama
Migration işlemi oluşturulduktan sonra uygulamak için birkaç adım izlenir. İlk olarak, migration işlemi uygulanacak veritabanı bağlantısı kurulmalıdır. Bu bağlantı, DbContext sınıfı tarafından kullanılacaktır. Veritabanı bağlantısı için, Startup.cs dosyasındaki ConfigureServices metodu içerisinde AddDbContext metodu kullanılır. Bu metoda, DbContext sınıfı ve veritabanı bağlantısı bilgileri parametre olarak verilir.
Veritabanı bağlantısı başarılı bir şekilde kurulduktan sonra, Update-Database komutu kullanılarak migration işlemi uygulanabilir. Bu komut, migration işlemlerindeki değişiklikleri veritabanına aktarır. Update-Database komutu Package Manager Console veya .NET Core CLI kullanılarak çalıştırılabilir. Komut çalıştırıldıktan sonra, migration işlemi başarılı bir şekilde uygulanmış olacaktır.
Database First Yaklaşımı ile Yönetim
Entity Framework Core ile veri tabanı yönetimi yaparken, kullanabileceğiniz iki yaklaşım vardır. Code First yaklaşımında önce modeliniz oluşturulur ve bu model üzerinden veritabanı oluşturulur. Ancak Database First yaklaşımında var olan bir veritabanı, Entity Framework Core kullanılarak yönetilir.
Database First yaklaşımı kullanırken öncelikle DbContext sınıfı oluşturulur. Bu sınıf Entity Framework Core'daki veritabanı işlemleri için kullanılır. Sonrasında Scaffold-DbContext komutu kullanılarak var olan bir veritabanında bulunan tablolar ve kayıtlar Entity sınıflarına dönüştürülür ve DbContext sınıfındaki DbSet özellikleri bu Entity sınıflarıyla eşleştirilir.
Database First yaklaşımı, var olan bir veritabanını Entity Framework Core ile yönetmek için etkili bir yöntemdir. Böylece veri tabanı üzerinde yapılan herhangi bir değişiklik otomatik olarak modelinizi günceller ve yaptığınız her işlemin doğru ve güvenli bir şekilde yapılmasını sağlar.
DbContext Oluşturma
Entity Framework Core, veritabanı işlemlerini yönetmek için DbContext sınıfını kullanır. Bu sınıf, veritabanındaki tabloları ve kayıtları C# nesneleriyle eşleştiren bir model oluşturur. DbContext ile veritabanı işlemleri kolaylaşır.
DbContext sınıfı, .NET Core uygulaması ve veritabanı arasındaki bağlantıyı sağlar. Sınıf, veritabanı bağlantısı ve veritabanı nesnelerini yönetir. Bu sayede, geliştiricilerin veritabanına erişim işlemlerini kolayca gerçekleştirmesi mümkün olur.
DbContext, veritabanı işlemlerinde kullanılacak olan DbSet sınıflarını belirtir. Bu sınıflar, ilgili veritabanı tablolarının C# nesneleriyle eşleştirilmesini sağlar. Veritabanındaki bir tablodaki her kayıt, DbSet sınıfı tarafından temsil edilir.
DbContext sınıfının oluşturulması, birkaç adımda gerçekleştirilir. İlk olarak, DbContext sınıfını uygulamamıza eklememiz gerekiyor. Daha sonra, DbContext sınıfından türetilmiş bir sınıf oluşturulur. Bu sınıf, veritabanı işlemleri için kullanılacaktır.
Scaffold-DbContext Komutu
Scaffold-DbContext komutu, var olan bir veritabanını Entity Framework Core ile kullanmak için kullanılır. Bu komut, DbContext ve Entity sınıflarını oluşturur. Bu sınıflar, var olan bir veritabanından otomatik olarak oluşturulur ve şemayı ve tablo yapılarını yansıtır. Sonuç olarak, kullanıcılar var olan bir veritabanında hızlı bir şekilde Entity Framework kullanabilirler.
Scaffold-DbContext komutu, geleneksel bir yaklaşımın aksine, özel bir model sınıfı oluşturma sürecinde kullanılabilir. Bu, daha önce oluşturulmuş veritabanlarını, özel .NET Core iş mantığı eklemeden kullanrak zaman ve çaba tasarrufu sağlar.
Daha İyi Performans İçin Neler Yapılabilir?
Entity Framework Core'ın performansı artırmak için birkaç strateji takip edilebilir. Sorguların optimizasyonu için, Entity Framework Core sorgularını optimize etmek için LINQ sorgularına daha fazla odaklanabilirsiniz. Özellikle, sorguların yığımlanmasından kaçınmak için Include metodu yerine ThenInclude metodunu kullanmak faydalı olabilir. Bu, tek sorguda tüm verileri alacağı için veritabanı trafiğini azaltacaktır.
Ayrıca, veritabanıyla iletişimde enumerasyondan kaçınmak performans açısından faydalıdır. Bu, ToList veya ToArray gibi bir forEach yerine sorgulu olmayan metotların kullanılması anlamına gelir. Bunun yerine, sorgu, bazı değişiklikler yapmadan önce IQueryable olarak çıkarılabilir.
Veritabanı bağlantı yönetim stratejileri de performansı artırabilir. Örneğin, Entity Framework Core, DbContext yönetimi nedeniyle veritabanına aşırı yüklenmemek için veritabanı bağlantılarının açılıp kapatılmasını sağlar. Veritabanı bağlantısı yönetimi efektif hale getirildiğinde, Entity Framework Core uygulamarı daha hızlı çalışacak ve daha fazla kullanıcı desteği elde edilecektir.