Buradasın
Entity Framework Core'da Code First Yaklaşımı ve Migrations Eğitimi
youtube.com/watch?v=UYQFO8CJbFoYapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Entity Framework Core'da Code First yaklaşımı ve migrations konularını anlatan kapsamlı bir eğitim serisidir.
- Video, Code First yaklaşımının temel kavramlarını açıklayarak başlıyor ve Database First yaklaşımıyla karşılaştırıyor. Ardından migration oluşturma, Package Manager Konsol ve .NET CLI üzerinden migration yönetimi, EF Migration History tablosunun kullanımı ve migrationları geri alma işlemleri adım adım gösteriliyor. Eğitmen, e-ticaret veritabanı örneği üzerinden DB Context ve Entity sınıflarının nasıl oluşturulacağını pratik uygulamalarla anlatıyor.
- Videoda ayrıca Code First ile ilgili önemli prensipler de paylaşılmaktadır: veritabanı sınıflarında yapılan tüm değişikliklerin Migrations eşliğinde gönderilmesi, manuel veritabanı değişikliklerinin mümkün olduğunca yapılmaması ve Migrations'a mümkün mertebe dokunmamak gerektiği vurgulanmaktadır. Video, bir sonraki derste Entity'nin oluşturulma prensipleri ve sorgulama konularına geçileceği bilgisiyle sonlanmaktadır.
- 00:01Entity Framework Core'da Code First Yaklaşımı
- Bu derste Entity Framework Core'da Code First yaklaşımı pratikte incelenecek.
- Code First yaklaşımı, önce kod kısmında domain kısmını modelleyip, sonra migration operasyonu ile veritabanı sunucusuna bu modeli aktarmayı içerir.
- Database First yaklaşımından farklı olarak, Code First yaklaşımı tam tersi bir mantıkla çalışır.
- 01:37Code First Yaklaşımında Temel Kavramlar
- Code First yaklaşımında temel kavramlar migration ve migrations'dır.
- Veritabanı sunucusunda oluşturulacak veritabanı, kod kısmında context sınıfı ve veritabanındaki tablolara karşılık gelen entity sınıfları ile modellenir.
- Context sınıfının içerisinde entity sınıfları DBSet propertileri olarak tutulur.
- 03:04Migration ve Migrations Kavramları
- Migration, kod kısmında modellediğimiz veritabanı mantığını veritabanı sunucusunun anlayacağı hale getiren bir C# sınıfıdır.
- Migrations, migration'ı veritabanı sunucusuna gönderip fiziksel olarak veritabanını oluşturma eylemidir.
- Migration oluşturmak, projede tasarladığımız kod mantığının veritabanı sunucusuna göç ettirilebilecek modelini oluşturmak anlamına gelir.
- 06:47Migration Oluşturma ve Veritabanı Modellemesi
- Migration oluşturmak için öncelikle Entity Framework Core aktörlerinin (DBContext ve entityler) kod kısmında oluşturulması gerekir.
- Migration oluşturma talimatı, Package Manager konsol üzerinden veya dotnet CLI üzerinden verilebilir.
- Veritabanı modellemesi için öncelikle DBContext sınıfı oluşturulur ve bu sınıf DBContext'ten türemelidir.
- 10:28Entity Modelleme
- Entity modelleme sırasında belirli kurallar uygulanır ve bu kurallar sonraki derste ele alınacaktır.
- Product sınıfı oluşturulurken id, product name, quantity ve price gibi kolonlar tanımlanır.
- Oluşturulan product nesnesi, veritabanındaki tabloya karşılık gelen bir entity modelidir.
- 11:08DB Context ve Entity İlişkisi
- Entity'nin DB Context'in bir tablosu olduğunu belirtmek için DbProperties oluşturulur.
- AccommersDbContext içinde products isminde bir tablo olacağını ve bu tablonun modelinin product türünde olacağını belirtiriz.
- Veritabanını kod kısmında modellemek için tablonun içerisindeki kolonlar belirtilir.
- 12:25Diğer Entity Sınıfları
- Customer sınıfı da bir entity olarak oluşturulabilir ve id, first name, last name gibi kolonlar tanımlanabilir.
- Entity class'ları DbProperties olarak bildirilmezse, migration oluşturulduğunda veritabanına eklenmez.
- Bir entity oluşturulduğunda, DbProperties olarak bildirilmesi gerekir, aksi takdirde Entity Framework ile alakalı bir sınıf değildir.
- 14:17Veritabanı Konfigürasyonu
- Veritabanı modeli hazırlandıktan sonra migration oluşturmak ve migrate etmek gerekir.
- Veritabanı modellemesi hangi veritabanı sunucusuna uygun şekilde modellendiğini belirtmek için connection string'i bildirmek gerekir.
- OnConfiguring fonksiyonu, context nesnesi ile ilgili temel konfigürasyonları yapmamızı sağlar.
- 15:23Veritabanı Sunucusu ve Provider
- Veritabanı sunucusuna uygun provider'ı bildirmek gerekir, örneğin SQL Server için "UseSqlServer" fonksiyonu kullanılır.
- Veritabanı provider'ı yüklendikten sonra gerekli bildirimler yapılabilir.
- Veritabanı sunucusunda yoksa, connection string'de belirtilen isimle yeni veritabanı oluşturulur.
- 18:02Migration Oluşturma
- Migration oluşturmak için Package Manager Konsol veya .NET CLI kullanılabilir.
- Migration oluşturmak için Entity Framework Tools kütüphanesi projeye yüklenmelidir.
- Package Manager Konsolda "add migration" komutu, .NET CLI'de "net ef migrations add migration" komutu kullanılır.
- 20:00Migration Oluşturma İşlemi
- Package Manager Konsolda "add migration mag1" komutu ile ilk migration oluşturulur.
- Entity Framework tool, projenin içerisinde DbContext'ten türeyen sınıfları ve DbSet'te bildirilmiş modelleri tarar.
- Oluşturulan migration, projenin içerisinde "Migrations" klasörüne eklenir.
- 21:07Magration Kavramı ve Özellikleri
- Magration, C# sınıfıdır ve içinde up ve down olmak üzere iki fonksiyon barındırır.
- Up fonksiyonu, magrit sürecinde veritabanı sunucusuna gönderilecek olan yenilikleri ve inkılap mantığında olan değişiklikleri içerir.
- Down fonksiyonu ise veritabanı sunucusunda yapılmış olanları geri almamızı sağlayacak olan çalışmaları barındırır.
- 22:00Magration Oluşturma ve İçeriği
- Var olan bir tablo üzerinde değişiklik yapmak için bir magration oluşturmak gerekir ve bu değişiklikler up fonksiyonunda yer alır.
- Down fonksiyonunda ise create table yerine drop table gibi geri alma işlemleri bulunur.
- Create table fonksiyonu içerisinde oluşturulacak veritabanı tablosunun adı, db set olarak verilen propertylerin isimlerinden alınır.
- 25:42Magration Oluşturma Yöntemleri
- Magration oluşturmak için package manager konsolda "dotnet ef migrations add" komutu kullanılabilir.
- CLI üzerinden magration oluşturmak için "dotnet ef migrations add" komutu kullanılır ve Entity Framework sayesinde projedeki db contextten türeyen sınıflar analiz edilir.
- Magration pathini belirlemek için package manager konsolda "output" parametresi, CLI'da ise "-o" parametresi kullanılır.
- 28:09Magration Yönetimi
- Magrationı silmek için package manager konsolda "dotnet ef migrations remove" komutu, CLI'da ise "net ef migrations remove" komutu kullanılır.
- Sistemde ne kadar magration varsa hepsini silmek için "remove" komutu kullanılabilir.
- Magrationları listelemek için package manager konsolda "dotnet ef migrations list" komutu, CLI'da ise "net ef migrations list" komutu kullanılabilir.
- 30:43Magrationları Migrate Etme
- Var olan magration'ı hedef veritabanına göndermek için package manager konsolda "dotnet ef database update" komutu kullanılabilir.
- CLI üzerinden magrationları migrate etmek için "net ef database update" komutu kullanılabilir.
- 31:21Veritabanı Güncelleme İşlemi
- Package Manager konsolunda "update database" komutu ile modellediğimiz veritabanı sunucuda hedef belirttiğimiz sunucuda oluşturulur.
- Veritabanında "customer" ve "product" tabloları oluşturulur ve bu tabloların detayları kodda oluşturduğumuz entitylerin kolonlarına karşılık gelir.
- Maggrade işlemi neticesinde "ef migration history" adında bir tablo oluşturulur ve bu tabloda sadece maggrade ile ilgili bilgiler tutulur.
- 33:14Maggrade İşleminin Çalışma Prensibi
- Birden fazla maggrade oluşturulduğunda, her maggrade önceki maggrade ile mevcut durum arasındaki farkı yakalar.
- Maggrade işlemi, var olan tabloya yeni kolon eklemek veya mevcut kolonu kaldırmak gibi işlemleri gerçekleştirir.
- Ef migration history tablosu, hangi maggrade'ın uygulandığını gösterir ve bu bilgi sayesinde sistem istenilen maggrade'a kadar geri alınabilir.
- 36:14Maggrade İşleminin CLI ile Gerçekleştirilmesi
- Maggrade işlemi Package Manager konsolunda "update database" komutu ile, CLI'da ise "net ef database update" komutu ile gerçekleştirilebilir.
- Maggrade işlemi, veritabanını modelimize göre günceller ve mevcut durumu modelimize uygun hale getirir.
- Maggrade işlemi sonrası, veritabanındaki tablolar ve kolonlar modelimize göre oluşturulur.
- 36:59Maggrade İşleminin Geri Alma İşlemi
- Maggrade işlemi geri almak için "down" fonksiyonu çalıştırılır.
- Maggrade geri alma işlemi için Package Manager konsolunda "update database migration name" veya CLI'da "net ef database update migration name" komutu kullanılır.
- Maggrade geri alma işlemi, belirtilen maggrade'a kadar olan tüm maggrade'ları geri alır ve veritabanındaki değişiklikler geri alınır.
- 40:51Kod Üzerinden Maggrade İşlemi
- Maggrade işlemleri tool aracılığıyla değil, kod üzerinden de uygulamanın runtime'da gerçekleştirilebilir.
- Kod üzerinden maggrade işlemi için context nesnesinden bir instance alınır ve bu instance üzerinden "database properties" özelliği kullanılarak "magrite asag" fonksiyonu çağrılır.
- Bu yöntem sayesinde uygulamayı ayağa kaldırırken de maggrade işlemleri gerçekleştirilebilir.
- 41:43Code First ile Veritabanı Oluşturma
- Context nesnesinden ecommers nesnesi alınarak database property'si ile veritabanına erişim sağlanıyor.
- Asenkron bir süreç için await komutu kullanılarak magnet işlemi gerçekleştiriliyor.
- Code First ile uygulama ayağa kaldırıldığında veritabanı hedef sunucuya modellemek için bu yöntem kullanılabilir.
- 43:13Code First Kullanım Prensipleri
- Veritabanı sınıfları üzerinde yapılan tüm değişiklikler migration eşliğinde gönderilmelidir.
- Manuel veritabanı değişiklikleri tutarsızlığa ve veri kaybına yol açabilir, bu nedenle mümkün mertebe kullanılmamalıdır.
- Veritabanının gelişim süreci migrationlarla kayıt altına alındığında, hatalar telafi edilebilir ve ihtiyaca binaen geri dönüş sağlanabilir.
- 45:02Migration Kullanımı ve Gelecek Dersler
- Migrationlara mümkün mertebe dokunmamak gerekir, ancak ileride hamql cümlecikleri veya store prosedür gibi yapılar için manuel olarak müdahale edilebilir.
- Sonraki derste entity'nin oluşturulma prensipleri ve konventionlar aktarılacak.
- Daha sonra veritabanı sorgulamaları, ilişkisel tablo yapılanmaları ve transaction kontrolü konularına geçilecek.