Buradasın
Entity Framework Core Eğitim Serisi: İlişkisel Senaryolar ve Veri Silme İşlemleri
youtube.com/watch?v=KWdojDjdJuoYapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Entity Framework Core eğitim serisinin bir bölümüdür. Eğitmen, veritabanı ilişkilerinde veri silme işlemlerini ve davranış modellerini detaylı olarak anlatmaktadır.
- Video, ilişkisel senaryolarda veri silme davranışlarını ele almaktadır. Özellikle birebir (one-to-one) ve çoka çok (many-to-many) ilişkilerde veri silme işlemlerinin nasıl yapılacağı, kasket delete (kapsayıcı silme) işlemlerinin Entity Core'da nasıl modelleyileceği adım adım gösterilmektedir. Ayrıca, principal table'daki bir veriyi silmeye çalışıldığında karşı tablodaki ilişkisel verilerin nasıl davranacağı, kasket, sednal ve restrict olmak üzere üç farklı davranış modeli ve bunların Entity Framework API ile nasıl konfigüre edileceği anlatılmaktadır.
- Videoda ayrıca set null davranışının nasıl kullanılacağı, primary key ve foreign key kolonlarının aynı olması durumunda dikkat edilmesi gereken noktalar ve migration işlemleri sırasında karşılaşılabilecek hatalar ve çözümleri de açıklanmaktadır. Eğitmen, serinin ilerleyen bölümlerinde entity tanımlama detayları, temel konfigürasyonlar, veritabanı yaklaşımları, constraint'ler, index operasyonları, sequence tanımlaması, join işlemleri, store prosedürler, viewler ve pivot table gibi konuların işleneceğini belirtmektedir.
- 00:01Entity Core Eğitim Serisi - İlişkisel Senaryolarda Veri Silme Davranışları
- Bu ders, Entity Core eğitim serisinin devamı olup ilişkisel senaryolarda veri silme davranışlarını ele alıyor.
- İlişkisel tablolarda bir veriyi sildiğimizde, bu veriye karşılık gelen ilişkisel verilerin nasıl davranacağı belirlenir.
- Veritabanı seviyesinde, esas tabloda (principal table) bir veriyi sildiğimizde, dependent table'daki ilişkisel verilerin nasıl silineceği "cascade delete" ile belirlenir.
- 00:59Cascade Delete Seçenekleri
- Veritabanı seviyesinde "cascade delete" seçenekleri arasında "delete", "nulled" ve "restrict" bulunur.
- "Delete" seçeneği, dependent table'daki verileri de siler.
- "Nulled" seçeneği, dependent table'daki verileri siler ancak esas tablodaki karşılığı silinmiş olarak işaretler.
- "Restrict" seçeneği, dependent table'daki veriler varsa silme işlemini engeller.
- 01:22Entity Core'da Cascade Delete
- Veritabanı seviyesinde yapılan bu davranışlar, Entity Core kısmında da modelleyebiliriz.
- Bu derste "cascade delete" başlığı altında silme durumlarında ilişkisel senaryolardaki davranışları belirleyeceğiz.
- Örnek veriler için "saving data" başlığı altında verilen kodları çalıştırabilirsiniz.
- 03:12One to One İlişkisel Senaryolarda Veri Silme
- One to one ilişkisel senaryoda, esas tabloda (principal table) bulunan bir veriye ilişkisel olarak bağlı olan dependent table'daki veriyi silmek için özel bir yaklaşım gereklidir.
- Öncelikle person tablosundan bir sorgu oluşturup, adresleri eklemek ve hedef personu belirlemek gerekir.
- Person ve adres tablolarını join ederek, istenen person ve karşılık gelen adresi elde edebiliriz.
- 04:39One to One İlişkisel Senaryo Örneği
- Context üzerinden personlara gidip, findEssential fonksiyonu ile istenen id'sine sahip personu bulabiliriz.
- Include fonksiyonu kullanarak personlara adresleri ekleyebiliriz.
- Sorgu neticesinde elde edilen person üzerinden adrese ulaşıp, context üzerinden adresleri remove edebiliriz.
- Gerçek operasyonlarda, person null değilse işlemi gerçekleştirmek için gerekli kontroller yapılmalıdır.
- 08:53One-to-One İlişkide Veri Silme
- One-to-one ilişkide veri silme işlemi için önce hedef bloğu elde etmek gerekir.
- Block'tan include fonksiyonuyla ilgili postlar çekilerek, silmek istenen post (örneğin id=2) bulunup remove fonksiyonu ile silinir.
- One-to-one ilişkide silme işlemi, bir entity'den diğer entity'yi silme mantığına dayanır.
- 11:54One-to-Many İlişkide Veri Silme
- One-to-many ilişkide silme işlemi, one-to-one ilişkisine benzer mantıkla yapılır.
- One-to-many ilişkide, dependent table'da birden fazla veri olduğunda, silme işlemi cross table üzerinden yapılır.
- Örneğin, bir kitaba karşılık yazarları silmek yerine, cross table'da eşleştirilmiş olan yazarları silmek gerekir.
- 12:23Çoka-Çok İlişkide Veri Silme
- Çoka-çok ilişkide veri silme işlemi, cross table üzerinden yapılır.
- Örneğin, bir kitabına karşılık iki yazarı silmek için, book'un Others ilişkisinden ilgili yazarı bulup remove fonksiyonu ile silmek gerekir.
- Eğer yazar silinirse, veri kaybı söz konusu olabilir, bu nedenle sadece cross table'daki değeri silmek için ilgili verinin adlarından silmek gerekir.
- 19:01Veritabanında Silme Davranışları
- Princible table'daki bir veriyi silmeye çalıştığımızda, karşı tabloda ilişkisel verilerin üzerine nasıl bir davranış sergileyeceğini belirlemek için kasket dilek yapılanmasını modellememiz gerekiyor.
- Veritabanı yapılanmasında kontrat bulunur ve bu kontrat silme davranışlarında hata verebilir.
- Üç farklı davranış modeli belirlenebilir: cascade, set null ve restrict.
- 20:19Silme Davranışlarının Açıklamaları
- Cascade, esas tablodan silinen veri ile karşı bağımlı tabloda bulunan ilişkili verilerin silinmesini sağlayan bir davranıştır.
- Set null, esas tablodan silinen veri ile karşı bağımlı tabloda bulunan ilişkili verilerin silinmesini sağlamaz, bunun yerine ilişkili verilere null değerin atanmasını sağlar.
- Restrict, esas tablodan herhangi bir veri silinmeye çalışıldığında, o veriye karşılık dependent table'da ilişkisel veri ya da veriler varsa silme işlemini engeller.
- 22:27Silme Davranışlarının Yapılandırılması
- Bu davranış modelleri Entity Framework API ile konfigüre edilebilmektedir.
- Context üzerinde birebir ve çok çok ilişkileri modellemişiz ve silme davranışları için on delete fonksiyonu kullanılır.
- Entity Framework, ilişkisel tabloların arasındaki silme davranışını varsayılan olarak cascade olarak ayarlar.
- 25:02Silme Davranışlarının Örneklendirilmesi
- Cascade davranışı ile bir bloğu sildiğimizde, veritabanı seviyesinde buna karşılık ilişkisel tabloda bulunan postlar da silinir.
- Set null davranışı ile silme işlemi yapıldığında, veritabanı seviyesinde silme işlemi gerçekleşmez, sadece ilişkili verilere null değer atanır.
- Set null davranışı kullanıldığında, maggation update edilmesi gerekir, aksi takdirde hata verir.
- 29:06Set Null Davranışı ve Birebir İlişkiler
- Set null davranışı, primary table'dan veri silindiğinde dependent table'daki ilişkisel karşılığı olan verilere null değer vermek anlamına gelir.
- Birebir ilişkisel senaryolarda set null davranışı kullanılamaz çünkü hem primary hem de foreign key olarak kullanılan bir kolonun null olma ihtimali veritabanı seviyesinde tutarsızlık oluşturur.
- Set null davranışı, birebir ilişki için kullanılırken foreign key kolonu ayrı bir property tarafından temsil edilmelidir.
- 38:32Set Null Davranışı İçin Gerekli Ayarlar
- Set null davranışı hem birebir hem de çok ilişkisel senaryolarda kullanılabilir, ancak birebir ilişki için foreign key kolonu ayrı bir property ile temsil edilmelidir.
- Set null davranışı için iki husus gereklidir: foreign key kolonuna karşılık gelen property nullable yapmak ve is required fonksiyonuyla zorunluluğu ortadan kaldırmak.
- Magration'lar arasında tutarsızlık oluştuğunda, hata verdiği noktaya kadar magration'ları silip son kez tekrar oluşturmak gerekebilir.
- 40:34Set Null Davranışı Testi
- Block silindiğinde, dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki dependent table'daki
- 42:07Entity Framework Core'da Silme İşlemleri
- Entity Framework Core'da bir ID'ye sahip olan veriyi silmeye çalıştığınızda, dependent table'da ilişkili veriler olduğundan tutarsızlık meydana gelebileceği için operasyon durdurulur.
- Çok çok ilişkide silme davranışı kask üzerine kuruludur; bir kitabı veya yazarı sildiğinizde, cross table'dan ilgili tüm verileri silmek zorundasınız.
- Entity Framework Core, çok çok ilişkide kask dışında ekstra davranışa izin vermez, bu davranışları sadece cross table'ı entity seviyesinde kendi modellerinizle magnet ederek yönetebilirsiniz.
- 44:58Eğitim Serisinin Durumu ve Gelecek Konular
- Eğitim serisinin yarısına gelinmiş olup, ilişkisel senaryolarda veriler üzerinde gerekli manipülasyonların nasıl yapılabileceğini incelemişlerdir.
- Gelecek derslerde entity tanımlama detayları, Entity Framework Core ile ilgili temel konfigürasyonlar, fonksiyonlar ve iki kutuplu konfigürasyon yapıları ele alınacaktır.
- Eğitim serisinin sonunda pivot table, güçlü sorguların nasıl yazılabileceği ve güçlendirilmiş sorguların nasıl inşa edilebileceği incelenecektir.