EF Core'un anlaşılması
Entity Framework Core (EF Core), nesne-ilişkisel eşleyicidir (ORM). ORM, kodda uyguladığınız etki alanı modeli ile veritabanı arasında bir katman sağlar. EF Core, .NET düz eski Common Runtime Language (CLR) nesneleri (POCO' lar) ve kesin olarak yazılan Dil Tümleşik Sorgu (LINQ) söz dizimini kullanarak veritabanıyla etkileşim kurmanızı sağlayan bir veri erişim API'sidir.
EF Core'da veritabanı .NET POCO'larının arkasında soyutlanır. EF Core, temel alınan veritabanıyla doğrudan etkileşimi işler. Bu API'yi kullandığınızda, veritabanından gelen ve gelen istekleri çevirmeye, SQL yazmaya ve önemli iş mantığına odaklanmaya daha fazla zaman ayırabilirsiniz.
EF Core ile şunları yapabilirsiniz:
- Verileri C# nesneleri (varlıklar) olarak yükleyin.
- Varlıklardaki yöntemleri çağırarak veri ekleyin, değiştirin ve silin.
- Birden çok veritabanı tablosunu tek bir C# varlığıyla eşleyin.
- Birden çok kullanıcı aynı anda aynı kaydı güncelleştirmeye çalıştığında ortaya çıkan eşzamanlılık sorunlarını işleyin.
- Veritabanını sorgulamak için LINQ (System.Linq) söz dizimini kullanın.
- SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL ve daha fazlası dahil olmak üzere birden çok veritabanına erişin.
- Mevcut bir veritabanından etki alanı modelinizi oluşturun.
- Veritabanı şemanızı etki alanı modelinize göre yönetin.
- Tek bir yöntem çağrısı kullanarak ilgili varlıkların karmaşık, derin veya geniş nesne grafiklerinde değişiklikleri işleyin.
EF Core mimarisini gözden geçirme
Aşağıdaki diyagramda EF Core mimarisi gösterilmiştir:
DbContext , bir çalışma birimini temsil eden özel bir sınıftır. DbContext
seçenekleri, bağlantı dizesi' leri, günlüğe kaydetmeyi ve etki alanınızı veritabanına eşlemek için kullanılan modeli yapılandırmak için kullanabileceğiniz yöntemler sağlar.
sınıfından DbContext
türetilen sınıflar:
- Veritabanı ile yapılan etkin bir oturumu temsil eder.
- Varlıkların örneklerini kaydeder ve sorgular.
- Veritabanındaki tabloları temsil eden türdeki
DbSet<T>
özellikleri ekleyin.
EF Core Sağlayıcısı, nesne grafı değişikliklerini SQL’ye çevirir.
Veritabanı sağlayıcısı:
- SQL Server, Azure Cosmos DB veya PostgreSQL gibi belirli bir veritabanı altyapısı için tasarlanmış bir eklenti kitaplığıdır.
- Yöntem çağrılarını ve LINQ sorgularını veritabanının yerel SQL diyalektine çevirir.
- Veritabanı altyapısına yönelik benzersiz işlevleri etkinleştirmek için EF Core’u genişletir.
Veritabanı şemalarını yönetme
EF Core, EF Core modelinizi ve veritabanı şemanızı eşitlenmiş durumda tutmanın iki birincil yolunu sağlar:
- Geçişler (doğruluk kaynağı olarak model )
- Tersine mühendislik (gerçeğin kaynağı olarak veritabanı )
Bu seçenekler arasında seçim yapmak için EF Core modelinizin mi yoksa veritabanı şemasının mı gerçeğin kaynağı olduğuna karar verin.
Geçişler
Gerçek dünyadaki projelerde, uygulama özellikleri uygulandıkça veri modelleri değişir. Yeni varlıklar eklendikçe ve kaldırıldıkçe veritabanı şemalarının buna göre değiştirilmesi gerekir. EF Core geçişleri özelliği, veritabanındaki mevcut verileri korurken uygulamanın veri modeliyle eşitlenmiş durumda tutmak için veritabanı şemasını artımlı olarak güncelleştirmenin bir yolunu sağlar.
Veri modeli değişikliği yapıldığında, geliştirici ilgili geçişi eklemek için EF Core araçlarını kullanır. EF Core, farklılıkları belirlemek için geçerli modeli önceki modelin anlık görüntüsüyle karşılaştırır. Değişiklikleri uygulamak için C# kodu oluşturulur. Özel davranışlar veya tohum verileri için C# dosyalarını değiştirebilirsiniz. Dosyalar, diğer kaynak dosyalar gibi projenizin kaynak denetiminde izlenir.
Yeni bir geçiş oluşturulduktan sonra veritabanına çeşitli yollarla uygulanabilir. EF Core, uygulanan tüm geçişleri özel bir geçmiş tablosuna kaydeder. Geçmiş tablosu, hangi geçişlerin uygulandığının kaydını tutar.
Tersine mühendislik
Tersine mühendislik, varlık modeli sınıflarını ve veritabanı şemasını temel alan bir DbContext
sınıfın iskelesini oluşturma işlemidir. Bu yaklaşım genellikle bir veritabanı yöneticisinin yönettiği mevcut veya paylaşılan veritabanlarında kullanılır.
Sonraki ünitede, geçiş kullanarak EF Core kullanmaya başlarsınız.