Hocam dersleriniz o kadar güzel ki, tüm konuyu derinlemesine anladikca oturub ağlayasım var. 😢 🤭 Yine çok şey öyrəndik. Keşke bi 5-10 yıl önce tanışsaydık bu kanalla. Təşəkkürlər. Valla dersleriniz tüm dillerde tercuman edilmeli ki, hər kes bu kadar farkli ve güzel anlatimdan faydalanmalı. Çünki anlatimin tarzinizin tek olduğuna inanıyorum. 🙏
Hocamında dediği gibi dikkatlice bakarsanız arkadaşlar Microsoft dokümantasyonuna orda dediği şey şudur. Ana sorguya(İnitial query) eklenen ilişkisel verileri database'den getirir demektedir. Burda Ana sorgu nedir Örneğin; Context.Blogs.Tolist()'dir değil mi. Yani blogs tablosunu bize getir. yani Ana sorgudur bu sorgu aslında. işte eager loadingle ana sorguya ilişkisel veirleri ekleriz neyle tabikide include() ile artık ana sorguya iliştirdiğimiz bu sorgu oluşur. context.Blogs .Include(blog => blog.Posts).ToList(); => dedimki ana sorgu olan blog sorguma ek olarak post ilişkisel veriye "irademle" dahil et ve öyle tolist() et yani getir.
Teşekkürler hocam, çok faydalı, bol kritikli güzel bir dersti. Kaç gündür görüp vakit ayırıp izleyemiyordum :( Ayrıca çok güzel videolar çekiyorsunuz velakin sosyal medya hesaplarınızı takip eden az sayıda insan var. Hassaten Twitter'da son video linkini bırakırsanız sizi takip edenler retweetlerse daha fazla kişiye ulaşabilir. Yabancı kaynaklarda bile böyle teferruatlı anlatan pek kişi yok, az tanınmanıza ben içerliyorum açıkçası :/ (Ya ben bunla uğraşmam derseniz ben uğraşırım isterseniz ^_^)
Hocam then include fonksiyonu çok kritik ve çok önemli ben bunu bilmediğimden dolayi bi ara baya gıcık etmişti bide 34:30 o kısımda anlattığıniz olay da bence çok önemli onu bilmeyen birisi kafayı yerdi öyle bir durumda
ya aynı durumu dün akşam yaşadım işten çıkmadan önce 2 3 saattir sorunu çözmeye çalışıyorum. viewComponent kullanıyorum bir çağırdığım controller da düzgün çalışıyor diğer çağırdığım controllerda tüm verileri getiriyor gerçekten hiçbiryerde sonuç bulamadım. En son gerçekten Gençay hocanın dediği aklıma geldi .AsNoTracking() i koyar koymaz düzeldi 😀
Çok ufak bir şeye dikkat çekmek istiyorum. "AutoInclude()" kullandığımızda hocamızın bahsettiği ilişkisel veri eğer in memory'de mevcut ise gereksiz yere sürekli "include()" fonksiyonunu initial sorgunun üzerine ekleyeceğini düşünüyorum . Buda Hocamın bahsettiği mikro düzeydeki optimizasyona ters bir hareket olacaktır. Yada diğer ihtimal include etmeden önce in memery'de olup olmadığına bakıp yoksa ekliyor ise işte o zaman tam bir optimizasyon harikası olacaktır. Not:EF Core'da tahmini iki davranışıda denemedim her iki ihtimalden özellikle ilkinin olabileceğini düşünüyorum.Deneyen birileri aydınlatırsa memnun olurum.
Ben departmanlar tablosu için denedim AutoInclude() fonksiyonunu: modelBuilder.Entity().Navigation(d => d.Calisanlar).AutoInclude(); Daha sonra, ilk önce çalışanları ardından da departmanları çağırdım veri tabanından: var calisanlar = context.Calisanlar.ToList(); var departmanlar = context.Departmanlar.ToList(); Sql Server Profiler'a baktığımda, Join ile departmanlar tablosuna çalışanlar tablosunu eklediğini gördüm: SELECT [d].[Id], [d].[DepartmanAdi], [c].[Id], [c].[DepartmanId], [c].[Maas], [c].[Name] FROM [Departmanlar] AS [d] LEFT JOIN [Calisanlar] AS [c] ON [d].[Id] = [c].[DepartmanId] ORDER BY [d].[Id] Yani çalışanlar tablosunun verilerini, ram'de olsa bile join ile birleştirip getiriyor. O yüzden çıkarımım şudur ki AutoInclude() fonksiyonunu kullanıyorsak gereken noktalarda IgnoreAutoIncludes() fonksiyonunu kullanmazsak ilgili tablodaki verileri birleştirip getirmeye devam ediyor EF Core.
Gençay hocam bir sorum olacak umarım görüsünüz. Ef core da include ettiğim bir verinin sonrasında bellekte tutulduğu için bir daha kullanımına gerek olmadığı söylemişsiniz. GarbageCollector'un bu verileri silmesi durumu olmaz mı runtime'da.
2 года назад
Verilerimiz referans edildiği için silinmeyecektir.
Hocam merhaba bir sorum olacaktı. Navigation Property'leri kullanmak istersek ama DB seviyesinde ForeignKey tanımlamasını engelleme gibi bir özellik mevcut mu Ef Core'da? Yani context.Employees.Include(x => x.Region) kullanmak istiyorum ancak bu aralarındaki relation sadece entity seviyesinde olsun, db'de FK tanımlamasın. Bu mümkün mü?
Hocam video için teşekkürler burada bir soru aklıma takıldı izninizle sormak istiyorum. Include kullandığımız zaman SQL sorgusunda join oluşturuluyor fakat include kullanmadan select içerisinde navigation property çağırırsak örneğin şu şekilde: context.Employees.Select(e => new {e.Region.Name}) yine join oluşuyor ve sıkıntısız verileri getiriyor. Açıkçası bahsettiğim 2 durum arasındaki farkı kavrayamadım. ChangeTracker ile alakalı bir durum mu bulunuyor burada? Böyle bir ikilem arasında kaldığımız vakit hangisini tercih etmeliyiz?