Entity Framework Core (EF Core) Temel Kavramlar
Veritabanı ve EF (Entity Framework) Core nedir, niçin kullanılır konuları anlatılmaktadır.
Veritabanı Nedir ve Neden Kullanılır?
Veritabanı (Database): Verilerin belirli bir düzen ve hiyerarşi içinde, kalıcı olarak saklandığı dijital bir depo sistemidir.
Neden Kullanılır?
Veri Bütünlüğü: Verilerin birbirleriyle ilişkili ve tutarlı olmasını sağlar.
Güvenlik: Kimlerin hangi veriye erişebileceğini yönetmemizi sağlar.
Hız ve Ölçeklenebilirlik: Binlerce satır veri arasından saniyeler içinde arama yapabilir.
İlişkisellik: Örneğin bir "Öğrenci" ile onun "Notlar"ı arasındaki bağı kolayca kurarız.
Entity Framework Core (EF Core) Nedir?
ASP.NET Core projelerinde veritabanı ile konuşmak için kullandığımız bir köprüdür. Teknik olarak bir ORM (Object-Relational Mapper) aracıdır.
Klasik Yöntem (ADO.NET): Eskiden veritabanına bağlanmak için uzun SQL cümleleri yazardık:
SELECT * FROM Ogrenciler WHERE Id=1.EF Core Yöntemi: Artık SQL yazmak yerine C# kodları yazıyoruz. EF Core, bizim yazdığımız C# kodlarını arka planda otomatik olarak SQL'e çeviriyor.
Neden EF Core Kullanıyoruz?
Hız: SQL yazmakla uğraşmadığımız için geliştirme süreci hızlanır.
Tip Güvenliği: Hataları daha kod yazarken (compile time) görmemizi sağlar.
Bakım Kolaylığı: Veritabanı tablosundaki bir değişiklik, C# sınıfımızda kolayca güncellenebilir.
Veritabanı Bağımsızlığı: Bugün SQL Server kullanırken, sadece küçük bir ayar değişikliğiyle yarın PostgreSQL veya MySQL'e geçebiliriz.
EF Core Temel Kavramları
EF Core içinde kod yazarken neyi, neden yazacağımızı anlamak için bazı terimleri bilmeliyiz.
Entity (Varlık): Veritabanındaki bir tabloya karşılık gelen C# sınıfıdır (Class). Örneğin;
Ogrencitablosu için oluşturduğumuzOgrenci.csbir Entity'dir.DbContext (Veritabanı Bağlamı): EF Core'un kalbidir. Uygulama ile veritabanı arasındaki tüm iletişimi yöneten sınıftır. "Sorgu gönder, veriyi getir, değişiklikleri kaydet" emirlerini bu sınıfa veririz.
DbSet: DbContext içinde yer alan ve tablolarımızı temsil eden koleksiyonlardır. Örneğin;
DbSet<Ogrenci> Ogrencilersatırı, veritabanındaki "Ogrenciler" tablosunu temsil eder.Migration (Göç): Yazdığımız C# sınıflarını (Entity) gerçek veritabanı tablolarına dönüştüren mekanizmadır. Kodda bir değişiklik yaptığımızda "Migration" oluştururuz, bu da veritabanını günceller.
EF Core Projesi İçin Gerekli Paketler (NuGet)
Bir ASP.NET Core projesinde EF Core kullanabilmek için Visual Studio'daki NuGet Package Manager üzerinden şu paketleri kurmamız gerekir. Visual Studio Code kullanılıyorsak terminal (PowerShell veya CMD) üzerinden .NET CLI komutlarını çalıştırarak kurulum gerçekleştirebiliriz. Bu paketlerin "eklenti" veya "kütüphane" olduğunu unutmayalım.
Microsoft.EntityFrameworkCore.SqlServer: SQL Server kullanacaksak bu paketi kurarız. (SqlServer yada MySql'e göre daha hafif bir yapı isterseniz Sqlite paketi güzel bir alternatiftir).
Microsoft.EntityFrameworkCore.SqLite: SqLite kullanacaksak bu paketi kurarız.
Microsoft.EntityFrameworkCore.Tools:
Add-MigrationveUpdate-Databasegibi komutları Package Manager Console üzerinde çalıştırabilmemizi sağlar.Microsoft.EntityFrameworkCore.Design: Tasarım zamanı araçlarını içerir, Migration işlemleri için gereklidir.
EF Core Kurulum ve Hazırlık Sıralaması
Genelikle "nereden başlayacağım?" diye takılırlar için standart bir EF Core iş akışı şöyledir:
Modellerin (Entities) Oluşturulması: Tablo yapımızı belirleyen sınıfları yazarız.
DbContext Sınıfının Yazılması: Bağlantı ayarlarını ve tabloları tanımlarız.
Connection String Belirlenmesi: Veritabanının ismini ve nerede olduğunu
appsettings.jsondosyasına veyaprogram.csdosyasına yazarız.Migration ve Update: Kodlarımızı veritabanına basarız.