Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Entity Framework Core konusunda kapsamlı bir eğitim serisidir. Eğitmen, teorik açıklamalar ve kod örnekleriyle konuyu detaylı şekilde anlatmaktadır.
- Video, Entity Framework Core'da çeşitli yapılandırma özelliklerini ele almaktadır. İçerikte kompozit key, hes default şema, hes default value, HasDefaultValue, HasDefaultValueSql, HasComputedColumnSql, HasConstraintName, HasData, discriminator, backing field, HasNoKey, HasIndex ve HasQueryFilter gibi yapılandırma özellikleri örneklerle açıklanmaktadır. Ayrıca kalıtımsal ilişkilerin veritabanında nasıl temsil edildiği ve table per hierarchy yaklaşımı gibi ileri seviye konular da işlenmektedir.
- Eğitim serisinin sonunda, yazılımda detaylı bilgiye ve kritik anlama becerisine önem vurgulanmakta, ve gelecek derslerde database generator, konfigürasyon sınıfları, interface'ler, tablolar, kontratlar ve indeksler gibi konuların işleneceği belirtilmektedir.
- 00:01Entity Framework Core Eğitim Serisi
- Bu derste Entity Framework Core eğitim serisine kaldığı yerden devam edilecek ve konfigürasyonel yapılandırmalara temas edilecek.
- İlk olarak incelenecek konfigürasyonel yapılandırma kompozit key (bileşik anahtar) konusudur.
- 00:23Kompozit Key Nedir?
- Normal anahtar (primary key), bir tabloda satırı benzersiz hale getiren bir kimlik kolonudur.
- Kompozit key, bir tabloda birden fazla kolonu kümülatif olarak kimlik davranışı sergilediği yapılandırmadır.
- Bir tabloda birden fazla kolonu birleşik olarak primary key yapmak istiyorsak, bunlara kompozit key denir.
- 02:14Kompozit Key Nasıl Kullanılır?
- Kompozit key oluşturmak için modelBuilder üzerinden Entity fonksiyonu kullanılır.
- HasKey fonksiyonu kullanılarak birden fazla kolonun isimleri parametre olarak verilerek kompozit key oluşturulabilir.
- Alternatif olarak anonim bir tür oluşturularak id ve id İki gibi kolonlar kompozit key olarak ayarlanabilir.
- 05:05Veritabanında Kompozit Key Görüntüsü
- Migration ile veritabanına uygulandığında, person tablosunda hem id hem de id İki kolonları primary key olarak tanımlanır.
- Bir tabloda birden fazla primary key varsa, bu yapıya kompozit primary key denir.
- 06:24HasDefaultSchema
- HasDefaultSchema, Entity Framework Core'da veritabanı nesnelerinin varsayılan şemasını değiştirmek için kullanılır.
- Normalde EF Core üzerinden inşa edilen veritabanı nesneleri default olarak dbo şemasına sahiptir.
- ModelBuilder üzerinden HasDefaultSchema fonksiyonu kullanılarak varsayılan şema değiştirilebilir.
- 08:33Property Konfigürasyonları
- Property model builder fonksiyonunda iki önemli konfigürasyonel yapılandırma bulunmaktadır.
- HasDefaultValue, ilgili özelliğe karşılık gelen kolona bir default değer atamayı sağlar.
- Örneğin, salary özelliğine HasDefaultValue ile 100 değerini atayarak, tüm işlemlerde default değer olarak 100 kabul edilir.
- 10:42Entity Framework Core'da Default Değerler
- Entity Framework Core'da sular ile ilgili veri girilmediğinde, default olarak 100 değeri atanabilir.
- Bir person oluştururken herhangi bir değer girilmediğinde, Entity Framework Core bu değeri 100 olarak kabul eder.
- Default değer, tablodaki herhangi bir kolonun değer gönderilmediği durumlarda hangi değeri alacağını belirler.
- 14:27HasDefaultValueSql Konfigürasyonu
- HasDefaultValueSql, tablodaki herhangi bir kolonun değer gönderilmediği durumlarda, hangi SQL cümleciğinden değeri alacağını belirler.
- Örneğin, created date için SQL'den getdate() fonksiyonu kullanılarak o anki tarih bilgisi alınabilir.
- Bu konfigürasyon, veritabanında SQL cümleciği çalıştırılarak ilgili kolona değer atanmasını sağlar.
- 17:38HasComputedColumnSql Konfigürasyonu
- HasComputedColumnSql, Entity Framework Core'da hesaplanmış kolonlar (computed columns) oluşturmak için kullanılır.
- Veritabanı yöneticileri, birden fazla kolonda veriler toplayıp hesaplama yapılan kolonlar oluşturabilir.
- Örneğin, "example" entity'sinde "x" ve "y" kolonlarının toplamını "computer" kolonunda tutmak için HasComputedColumnSql kullanılır.
- 22:50HasConstraintName Fonksiyonu
- Entity Framework Core üzerinden oluşturulan constrain'lerin default isim yerine özelleştirilmiş bir isim vermek için "HasConstraintName" fonksiyonu kullanılır.
- Entity Framework Core, constrain'lerin kendi default isim atama huyuna sahiptir, ancak çalışma içinde constrain isimleri için standart belirlendiğinde bu isimleri özelleştirmek gerekebilir.
- HasConstraintName fonksiyonu, EF Core üzerinden oluşturulan constrain'lerin isimlendirmesini özelleştirmek için kullanılan bir yapılandırmadır.
- 24:21HasConstraintName Örneği
- Person ve Department arasındaki ilişki için fore key kolonu oluşturulur ve HasOne ile ilişki modellemesi yapılır.
- HasForeignKey ile fore key tanımlanır ve HasConstraintName fonksiyonu kullanılarak constrain'e "ahmet" gibi özelleştirilmiş bir isim verilir.
- Magration sürecinde, HasConstraintName kullanıldığında EF Core tarafından oluşturulan default constrain ismi, belirtilen özelleştirilmiş isme (örneğin "ahmet") dönüştürülür.
- 28:49HasData Konfigürasyonu
- HasData konfigürasyonu, veritabanı modelleme sürecinde hazır veriler (seed data) oluşturmak için kullanılır.
- Seed data, veritabanı inşa edilirken yazılım üzerinden hızlıca gönderilebilen hazır verilerdir.
- HasData fonksiyonu, entity'ye ait verileri parametre olarak alır ve magration sürecinde veritabanına ekler.
- 32:14HasData Kullanımı
- HasData fonksiyonu, entity'ye ait verileri virgülle ayrılan parametreler olarak alabilir veya belirli bir türdeki bir dizi alabilir.
- HasData kullanırken, primary key olan id kolonlarına manuel değer girilmesi gerekir, aksi takdirde magration işlemi başarısız olur.
- HasData ile oluşturulan veriler, magration sürecinde veritabanına eklenir ve veritabanında hazır olarak bulunur.
- 34:52Entity Framework'de Magnation Oluşturma
- Magnation sürecinde oluşturulacak verilere, verilerin primary key olan id kolonlarına iradeli bir şekilde değerlerin girilmesi zorunludur.
- Magnation oluşturulurken department verisi de oluşturulduğunda, department nesnesinin id'sini de vermemiz gerekiyor.
- Magnation oluşturulduğunda, veritabanı inşa edilirken bu veriler eşliğinde inşa edilir.
- 37:43HES Discriminator Yapılandırması
- HES discriminator, sonraki derslerde incelenecek table per hierarchy ve table type konularıyla alakalı önemli bir yapılandırmadır.
- Entityler arasında kalıtımsal ilişkiler varsa, bu ilişkilerin tablolarda nasıl görüntüleneceği table type ve table per hierarchy başlıkları altında incelenir.
- Discriminator, ayrıcı gibi bir yapıdır ve table per hierarchy yaklaşımında kullanılır.
- 39:47Kalıtımsal İlişkiler ve Discriminator Örneği
- Kalıtımsal ilişkiye sahip entityler oluşturmak için abstract bir Entity sınıfı ve bu sınıftan türetilen A ve B sınıfları kullanılır.
- Kalıtımsal ilişkiye sahip entityler DBSet olarak eklenirse, Entity Framework bunun table per hierarchy yaklaşımı olduğunu anlar.
- Magnation oluşturulduğunda, sadece base class ile alakalı bir tablo tasarlanır ve bu tabloda hem base class hem de türetilen sınıflardaki tüm kolonlar tek bir tablo olarak modellenir.
- Discriminator kolonu, verilerin hangi entity'e karşılık geldiğini ayırt etmek için kullanılır.
- 46:01Discriminator Kullanımı
- Discriminator, veritabanında hangi entity için gelen verinin ayırt edilmesi için kullanılan bir kolondur.
- Discriminator kolonunun adını değiştirmek için "HasDiscriminator" yapılandırması kullanılabilir.
- Discriminator kolonunun veri tipini değiştirmek için "HasValue" fonksiyonu kullanılabilir, örneğin string yerine integer değerler kullanılabilir.
- 50:08Table Per Type ve Table Per Hierarchy
- İleride entityler arasında kalıtımsal ilişkilerin olduğu Table Per Type ve Table Per Hierarchy konuları incelenecek.
- Bu konularla ilgili yapılandırmalar HasDiscriminator ve HasValue fonksiyonlarıdır.
- 51:06HasField Yapılandırması
- HasField, backing fieldleri kullanmamızı sağlayan bir yapılandırmadır.
- Backing field, bir property'nin arkasında kullanılan özel bir field'dır.
- HasField yapılandırması, bir property'nin hangi field'dan beslendiğini belirtmek için kullanılır.
- 55:23HasKey Yapılandırması
- Normal şartlarda Entity Framework Core'da tüm entity'lerin bir primary key kolonu olmak zorundadır.
- Eğer bir entity'de primary key kolonu olmayacaksa bunun bildirilmesi gerekir.
- Bu bildirim için kullanılan fonksiyon HasNoKey'dir.
- 56:18Entity Framework Core'da Primary Key Olmayan Entitiler
- Department tablosu için primary key olmayan bir entity için migration oluşturmak istendiğinde hata alınır.
- Primary key olmayan bir entity için migration oluşturmak için HasNoKey() metodunu kullanmak gerekir.
- Primary key olmayan bir tabloyla ilişki kurmak mümkün değildir, bu nedenle ilişkileri görmezden gelmek gerekecektir.
- 58:37HasNoKey() Kullanımı ve Önemi
- HasNoKey() metodu, primary key olmayan bir entity'i tanımlamak için kullanılır.
- View'lerden veya stored prosedürlerden veri çekmek istendiğinde, id veya primary key tanımlamak zorunda kalınır.
- Entity Framework Core, primary key olmayan bir entity için hata verir, bu hatayı HasNoKey() ile ortadan kaldırabilirsiniz.
- 1:00:08Index Oluşturma
- Sonraki derslerde Entity Framework Core üzerinden index oluşturma detaylıca incelenecektir.
- HasIndex() metodu, bir tabloda index oluşturmak için kullanılır.
- Birden fazla indexleme yapmak için anonim olarak indexleme operasyonu gerçekleştirilebilir.
- 1:01:34HasQueryFilter Kullanımı
- HasQueryFilter, Entity Framework Core'da belirli tablolara karşılık default filtre koymamızı sağlayan bir özelliklerdir.
- Global query filters başlıklı bir dersin yapılandırmasıdır ve detaylı konuşulacaktır.
- HasQueryFilter ile bir entity için uygulama bazında global bir filtre koymak mümkündür, örneğin sadece aktif personelleri veya belirli bir yılın personellerini sorgulamak için kullanılabilir.
- 1:04:13Öğrenme Yaklaşımı ve Kritik Düşünce
- Dersler sıralı bir şekilde ilerliyor ve sonraki derslerde kritik yapılandırma gerektiren konular ele alınacak.
- Anlaşılmayan noktalar hususi derse bırakılmalı ve her şey anlaşılmayacak şekilde bırakılmamalıdır.
- Bir şeyi pratikten anladığında zeki olunması ve bir şeyi tamamlamak gerektiği vurgulanıyor.
- 1:05:09Kritik Düşünce ve Detay Önemi
- Kritik yapmadan bir şeyin tamamını detayına girmeden ele almak büyük tehlikeye neden olabilir.
- Aptala anlatır gibi anlatmak ve aptal gibi dinlemek doğru düzgün öğrenmenin yolu olarak belirtiliyor.
- Türkiye'de emeksiz bir şey elde etmenin getirdiği kültür, kritik yapmadan bir şeyi anlamayı değerli hale getirmiş.
- 1:06:12Yazılımda Detay Önemi
- Yazılımda sıkılma değil, öğrenebildiğin kadar öğrenmek önemlidir.
- Yurt dışındaki yazılımcıların yazdıkları makalelerde detaylı bilgiler bulunurken, bazıları detayları bilmeye gerek görmemektedir.
- Bilgiyle davranışlar modellenebilir ve bilgi bir projeksiyonun kılavuzudur.
- 1:08:22Gelecek Dersler
- Yapılandırmaların büyük çoğunluğu tamamlanmış ve bundan sonra ekstra yapılandırmalarla ilgili çalışmalar yapılacak.
- Database generator, konfigürasyon sınıfları, interface'ler ve yapılar ele alınacak.
- Kontratlar ve indeksler gibi konular da işlenecek.