44) Asp.NET Core 5.0 - Derinlemesine ViewModel & DTO Yapılarının İncelemesi

Поділитися
Вставка
  • Опубліковано 21 лип 2024
  • Github : github.com/gncyyldz #aspnet #netcore #programlama #yazilim #viewModel #dto
    İçindekiler :
    00:00 Giriş
    01:12 ViewModel Nedir?
    05:08 DTO(Data Transfer Object) Nedir?
    05:49 ViewModel - DTO Nesne Karşılaştırması
    09:24 ViewModel ve DTO'da ki Temel Amaç Nedir?
    11:34 Senaryo 1 - Birden Fazla Nesneyi Tek Bir Nesneye Bağlama
    28:49 Senaryo 2 - Bir Model’in View’de ki Etkileşimine Uygun Parçasını Temsil Etme
    31:16 Sözleşme/Kontrat Mantığı Nedir?
    35:04 ViewModel'lar da Validation Durumları
    41:15 ViewModel'ı Entity Model'a Nasıl Dönüştürebiliriz?
    42:55 Manuel Dönüştürme
    44:14 Implicit Operator Overload İle Dönüştürme​
    50:08 Explicit Operator Overload İle Dönüştürme​
    51:27 Reflection İle Dönüştürme
    01:02:28 AutoMapper Kütüphanesi İle Dönüştürme
    Bu video Gençay Yıldız tarafından NGAkademi bünyesinde ücretsiz çekilmiştir.
    Ders notları ve dosyalarının hepsine aşağıdaki adresten erişebilirsiniz.
    ngakademi.com/courses/ozel-de...
    Gençay Yıldız'ın Bloğu
    www.gencayyildiz.com/blog/
    Güncel Duyuru ve Bildiriler İçin Sosyal Medya Hesaplarımız
    / ngakademi.sosyal
    / ngakademi
    / ngakademii
    Bana destek olmak için kanalıma üye olabilirsiniz:
    / gençay yıldız

КОМЕНТАРІ • 65

  • @postaciIK
    @postaciIK 19 днів тому +1

    Birşeyi iyi bilmek önemli ama en iyi bildiğin şeyi öğretmek başka bir yetenek. Gençay bey ikisininde bir arada olduğu bir eğitmen ile tesadüfen karşılaştığım için çok mutlu oldum. Reklamınızın bol olması dileğim ile ... Sizi her zaman takip edeceğim. Teşekkürler

  • @erdemaytek
    @erdemaytek 3 роки тому +26

    Böyle eğitmen görmedim. Yeni bir şey öğrendiğimde vay arkadaş neler varmış dedirtiyor. :-)

  • @onuraydn5330
    @onuraydn5330 Рік тому +2

    Hocam ismini verdiğiniz herhangi bir şey artık benim için ileri seviye değildir sayenizde. İsmini sizden duyduğum an anında blog'unuzda ararım orda yoksa microsoft dökümantasyonuna bakarım. İmplicit ve Expliciti sayenizde öğrenmiş oldum;
    Yani resmen bizim ameleus yöntemini kendisi arka planda yapıp dönüştürüyor sonra o referansa rahatlıkla eşitliyor. Gerçekten işi acayip kolaylaştırıyor;
    Bilinçsiz bir örnek veriyim size arkadaşlar bilmeyenler için basit. mesela Form uygulamalarında MessageBox.Show() metodu aslında içerisine sadece string değer kabul etmektedir. ama gidip int değer verin İde hata göstermez neden implicit bir dönüşüm var orda aslında. complier seviyesinde derlenirken onu bilinçsiz olarak gider stringe çevirir aslında. bilinçli olanlarda elimize irademizle dönüştür dediklerimizdir. burda kendiliğinden bilin.siz bir dönüşüm söz konusu değildir.
    Ben implicit ve explicit'i biliyordum ama operatörle custom olarak bunlara özel dönüşümler tanımlama yapabildiğimizi bilmiyordum , sadece build in tanımlı olanlar yapılabilir sanıyodum.
    saolun gençay hocam duymam yeterli sayenizde

  • @emreesencomtr_
    @emreesencomtr_ 2 місяці тому +1

    Hocam keşke React serisi çekseniz harika olurdu. Derinlemesine React

  • @cemsahin8876
    @cemsahin8876 2 роки тому +4

    Ağır geldi ya.Çok güzel bir seri gerçekten ama son birkaç video'dur zorlamaya basladı.
    Belki 5 aylık bir öğrenme sürecinde olduğumdandır bilemiyorum ama hem keyif alıyorum hem de dinlerken ağlıyorum :)

  • @sumeyyeaktepe3201
    @sumeyyeaktepe3201 Рік тому +3

    Ben size çok dua ediyorum bilin istedim.Emeğinize sağlık

    •  Рік тому +1

      Teşekkür ederim kardeşim. Bol bol faydalanmanız dileğiyle...
      Sevgiler.

  • @ugursinansagroglu3132
    @ugursinansagroglu3132 2 роки тому +5

    Çok başarılı eğitimler... Böylesini görmedim desem yeridir. Gençay Hocam a saygılar.

  • @ahmetakarsu1976
    @ahmetakarsu1976 3 роки тому +7

    Ne kadar çok bilmediğim şey varmış, Teşekkür ediyorum kıymetli hocam.

  • @onderselte74
    @onderselte74 Рік тому +2

    Şimdiye kadar izlediğim ve dinlediğim en iyi "ViewModel neden kullanılmalıdır ? Nasıl uygulanır ?" dersiydi. Teşekkürler...

  • @okanyldrm6173
    @okanyldrm6173 3 роки тому +3

    Emeğinize sağlık çok temiz anlatiyorsunuz takipteyiz 😊

  • @dursunkatar725
    @dursunkatar725 3 роки тому +3

    emeğinize sağlık hocam eğitimlerini devamını bekliyoruz

  • @Merve_Esen
    @Merve_Esen 10 місяців тому +1

    Teşekkürler hocam

  • @abdullahdinler
    @abdullahdinler Рік тому +2

    Hocamın eğittimlerini izlerken insan ne kadar az şey bildiğmi fark ediyor. Seviliyorsunuz hocam

  • @MetinTuncer
    @MetinTuncer 3 роки тому +1

    Müthiş bir anlatım .. eline sağlık hocam.

  • @enesdere6877
    @enesdere6877 2 роки тому +1

    Müthiş video hocam, teşekkürler.

  • @esengulozkul1356
    @esengulozkul1356 2 роки тому +1

    Gençay hocam çok sağolun anlattıklarınız çok kıymetli.Emeğinize sağlık

  • @Furki4_4
    @Furki4_4 2 роки тому +3

    Ameleus yöntemini niyeyse her duyduğumda tebessüm ediyorum :D emeğinize sağlık. implicit-explicit operator overload ve reflection yöntemlerini bilmiyordum; en azından farkındalığına haiz oldum, detaylı araştıracağım, dediğiniz gibi ileride siz anlatırsanız sizden de dinlerim.

  • @kilicarslan5976
    @kilicarslan5976 2 роки тому +4

    Bu mükemmel teorik anlatımın direk pratiğe uygulanabilinecek bir proje yapmış olmanız yok mu ya çok az kaldı ona başlamama :)

  • @esmaicer845
    @esmaicer845 Рік тому +1

    çok teşekkürler hocam anlatımınız ve emeğiniz için

  • @imranekberli2933
    @imranekberli2933 2 роки тому

    Hocam dersleriniz mohtesemdir.Cox tesekkur ederiz

  • @emirhansesigur8375
    @emirhansesigur8375 9 місяців тому +1

    Seviliyorsun Gençay Hocam. Takipteyiz 😇😊

  • @yamillayicov7256
    @yamillayicov7256 Рік тому +1

    Harikasiniz hocam bu konular hakkinda hep takilyordum simdi aydinlandim..teskkurler❤❤❤❤

  • @duyguackaln4748
    @duyguackaln4748 Рік тому +1

    Blogunuz ve videolarınız çok başarılı ve faydalı. Cok tesekkür ederim emeğinize sağlık

  • @emreesencomtr_
    @emreesencomtr_ 2 місяці тому +1

    Çok dua alıyorsunuz Hocam. Allah razı olsun

  • @ajdjixjsocjjaiagxg921
    @ajdjixjsocjjaiagxg921 10 місяців тому +1

    İşte öğretmen senin gibi olur. Teşekkürler video için.

  • @osmansalihkaratay8228
    @osmansalihkaratay8228 11 місяців тому

    Destek ve teşekkür yorumu :)

  • @SuskunMoruk
    @SuskunMoruk Рік тому +1

    hocam bu videolara birşey olsa dünya başıma yıkılır :D

  • @murad-dov
    @murad-dov Рік тому +1

    Allah razı olsun Hocam

  • @akinaldemir5278
    @akinaldemir5278 3 роки тому +2

    gerçekten değerli bilgiler hocam emeğinize sağlık umarım tüm seri bu şekilde devam eder

  • @emreaka3965
    @emreaka3965 3 роки тому +2

    Teşekkür ederim.

  • @celaleker2741
    @celaleker2741 2 роки тому +1

    Gencay Hocam agzınıza sağık . Hocam Dto'da bazen kendi içerisinde birden fazla modeli Barındırabilir . Nasılki VM Farklı Dto'ları barındırabilirse bir küme gibi, Birde Güzel bir senaryo fark ettim çalıştıgım iş yerinde Birden fazla servis ile çalısan uygulamalarda bu Dto ve VM kavramı daha net ayrılabiliyor .VM -- DTO okunaklık açısından güzel oluyor . Fakat Dikkat edilecek bir nokta oldugunu düşünüyorum . DB'den çektikten sonra DTO ile gelen verileri UI aktarabiliriz Çok fazla (10 bin adet)veri gelip onu DTO ile alıp sonra VM 'e mapping etmek maliyet olabiliyor.Direk DTO basmak daha güzel olabilir. Saygılar

  • @ugursesen7629
    @ugursesen7629 Рік тому +1

    büyüksün be Gençay :)❤❤

  • @kilicarslan5976
    @kilicarslan5976 2 роки тому +2

    çekeceğiniz ileri düzey programlama derslerini izlersem belki bir eczacı edasıyla yazdığınız kodları okuyabilirim Gençay doktorum çünkü şu an değil yazmak, okumak bile mümkün görünmüyor :D

    • @freelife9228
      @freelife9228 Рік тому

      Hocam acil ileri düzey programlama dersi şart. Kayboluyorum

  • @sadaharu_tr
    @sadaharu_tr Рік тому +1

    1:02:00 'da AutoMapper'cıları karşınıza almışsınız hocam. Cesaret ister.

  • @mesutdemirci4251
    @mesutdemirci4251 2 роки тому

    ağzınıza sağlık..proje örneği de yapsanız on numara beş yıldız olur. viewdata ile ViewModel göndermede performans farkı var mı

  • @lastidea4925
    @lastidea4925 2 роки тому +3

    Eline saglik hocam. Cok sey ogrendim bu seride. 2 Gun once de yeni bir projeye basladim. Empty asp.net core projesiyle calismaya basladim tek tek her seyi kendim ekledim ki neyi neden yaptigimi iyice kavrayayim. Hatta boostrap ile kendim css de ekleyerek navbar falan olusturdum. Tek sikinti cektigim kisim, back-end tarafina gececegim ancak cok katmanli mimariyi entegre konusunda kafam karisti bir de Code First falan var kafamda tam oturmadi. Sifirdan bir proje gelistirdiginiz bir seri cekseniz, Identiy'den tutun da cok katmanli mimari, angrular vs. her seyi kullansak cok guzel olur. Yani teori kismi tamam ama birazcik pratige ihtiyacimiz var.

    • @lastidea4925
      @lastidea4925 2 роки тому

      Simdilik cok iyi gidiyor bakalim ne zaman bitecek

  • @hidrasal6059
    @hidrasal6059 10 місяців тому +2

    Hocam şu reflection kısmında kendimi mal gibi hissettim ya

  • @imranekberli2933
    @imranekberli2933 2 роки тому

    Hocam reflection ile donusturmeni ne zaman kullanmaliyiz? Siz bir nece yontem izah etdiniz. hansini ve ne zaman istifade etmeliyikki ,bizim ucun daha əlverişli olsun?

  • @RoyZASTEROiD
    @RoyZASTEROiD 2 роки тому

    Gencay hocam, POCO nedir? onuda cevaplaya bilirmisiniz rica etsem? sagolun

  • @BurakTemelkaya
    @BurakTemelkaya 2 роки тому

    hocam reflection da yazdığınız kodu denedim ama hata aldım obje ayarlanmadı diye ama automap ile yapınca sıkıntısız çalıştı.

  • @bugrahansabuncu3662
    @bugrahansabuncu3662 Рік тому

    Converter'da property null olduğunda uygulama hataya düşüyor.Bir if kontrolü ile aşılabilecek bir şey ama eğitimlerinizde yazıp geçmek yerine kodları çalıştırsanız fena olmaz.

  • @mustafadogan7184
    @mustafadogan7184 Рік тому

    Hocam entitydeki değerim int ama ben list tipinde gönderiyorum yani 3 tane değer gönderiyorum. Bu list tipindeki değeri int değere nasıl map leyeceğim?

  • @lastidea4925
    @lastidea4925 2 роки тому

    Yani ozetle, ViewModel'i veriyi user'a gostermek icin Entity'den donusturecegiz ancak ViewModel'de update ya da create kullanirsak bu sefer de database'a gonderirken ViewModel'i Entity'e donusturecegiz oyle mi? Ek olarak bu ViewModeller EntityLayer'da mi olmali yoksa ana projede mi? N-tier kullaniyorum.

  • @batuhan5769
    @batuhan5769 3 роки тому

    malesef benim dto yu cshtml de görmüyor. yalnız cshtml de tuple ile iki model alıyorum. ondan kaynaklana bilir mi? uyarıyı göstermek istediğim spanın asp-validation-for kısmına mecburen Item2.yazi yazıyorum. fakat dto da o kısmın prop ismi sadece yazi. acaba isimleri aynı değil diye mi göstermiyor? dto da ki ismi Item2.yazi yapmaya çalıştığım da da izin vermiyor.

  • @hunterwaxsel
    @hunterwaxsel 3 роки тому +2

    ilk yorummmmmm :)

  • @huseyincuma9523
    @huseyincuma9523 2 роки тому +1

    1:30 abi ben zaten hılandırıp izliyodum varya bi an uçtuk ya.

  • @abdulkadirkg
    @abdulkadirkg 2 роки тому +1

    Hocam Autofac kullanıyorum. AutoMapper doğrudan Autofac'a destek vermiyor. Bu konuda (DI) önerebileceğiniz (mümkünse Türkçe) doküman var mıdır? Elinize sağlık video muazzam olmuş.
    Düzenleme;
    Projemde AutoMapper'i aşağıdaki şekilde kullansam bir sakıncası olur mu?
    ------------------------------------
    public static class MapperUtil
    {
    private static Mapper _mapper = new Mapper(new MapperConfiguration(
    cfg => cfg.CreateMap().ReverseMap()
    ));
    public static TDestination Map(TSource source)
    {
    return _mapper.Map(source);
    }
    }
    ------------------------------------
    Kullanırken de;
    ------------------------------------
    User user = MapperUtil.Map(userRegisterDto);
    ------------------------------------

  • @berkaydogan5668
    @berkaydogan5668 Рік тому

    hocam js ile bir proje geliştirme kampı gelicek mi?

  • @selcukyazc8450
    @selcukyazc8450 3 роки тому +5

    Hocam selamlar, ilerde aynı anlatım şeklinizde proje örnekleri yapacak mısınız

    •  3 роки тому +10

      İnşallah

    • @eemoguzhan6504
      @eemoguzhan6504 3 роки тому +3

      @ hocam ücretli veya ücretsiz kapsamlı bir porje örneği için ders yayınlarsanız ilk sırada yerimi almak isterim

  • @CirillaFionaElenRiannon_
    @CirillaFionaElenRiannon_ 3 роки тому +4

    Teşekkürler. Hocam overlaod'lar arasında hangi tuş ile dolaşıyorsunuz?

    • @anonim8680
      @anonim8680 3 роки тому +5

      Metotların overload’larını Shit+Ctrl+Space ile görebilirsiniz. Sonrasında aşağı ve yukarı yön tuşları ile overload’lar arasında dolaşabilirsiniz.

  • @anonim8680
    @anonim8680 3 роки тому +2

    Merhaba hocam, yine çok güzel bir anlatım olmuş.
    Yalnız DTO yapılanmasını algılayamadım. Nedeni ise anlatımınızda entity'leri, ViewModel'leri somut olarak görmekteyiz. Ama şu kod DTO yapılanmasıdır dediğiniz bir yere denk gelmedim. O yüzden de kafamda canlandıramadım. Anlatımınızdan çıkardığım sadece entity de bir DTO olabileceği, ViewModel de bir DTO olabileceği (Eğer öyle ise neden özellikle DTO diyoruz, durumu yanlış anlamış da olabilirim). Ya da entity'leri bir DTO olarak mı kabul ediyoruz. Yoksa bu dönüştürme işleri mi bir DTO. Kafamda deli sorular :)) Entity, ViewModel ve DTO'nun bir arada olduğu ve DTO'nun ne iş yaptığı ile ilgili bir örnek olsaydı çok daha iyi olacaktı. Tek takıldığım nokta burası oldu. Umarım geri dönüş sağlarsınız.

    • @berkdeveloper
      @berkdeveloper Рік тому +1

      ua-cam.com/video/xecEj7UuvzE/v-deo.html Burada açıklıyor. Aslında viewModeli anladıysan, Dto ile ViewModel arasındaki farkı anlaman yeterlidir. DTO View'e (API tarafına) gönderilmez. (gönderilebilir ama amacı tam olarak bu değildir.) zaten aralarındaki en büyük fark budur.

    • @anonim8680
      @anonim8680 Рік тому +2

      @@berkdeveloper Teşekkürler. Somut olarak da görmek istemiştim aslında. Bu konuda sizin gibi başka açıklamalarla kafamda canlandırdım. Sanırsam hocamız "Asp.NET Core 6 + Angular | Mini E-Ticaret Uygulama Serisi"nde bir yerde somut olarak kullanmış. İlgili derse gelirsem tam olacak :))

  • @forxynet
    @forxynet 3 роки тому

    AutoMapper bölümünü çok temel anlatmışsınız. Field isimlerinin nasıl map edildiğini gösterseydiniz sanki daha iyi olurdu örnek db de ingilizce field isimlerinin türkçe field isimlere map edilmesi automapping'i çok daha iyi anlatırdı kanısındayım.

    •  3 роки тому +11

      Bu ders automapper dersi değildir. Anlatacaksan sırf ilgili kütüphaneyi yarım saat anlatırsın. Sence bu şekilde amaca uygun olur mu? Özel bir kütüphanenin o kadar derinlikli anlatımı olmaz. Bu gün anlatılan yarın değişebilir, değişecektirde. Bu derste konuya dair mevcut yol yordamlar anlatılmıştır. Artık automapper'a o derece sevdalanan olursa açar bakar dökümanlarına. Şu aşamadan sonra bilgi edindikten sonra daha da teferruatlandırmak öğrencinin sorumluluğundadır. Bi zahmet araştırma ve okuma eğilimi gösterelim lütfen...

    • @Bilal-fr4ox
      @Bilal-fr4ox 3 роки тому

      @ sakin olun hocam biz sizi biliyoruz

    • @nicolatesla00
      @nicolatesla00 3 роки тому +3

      @ hocam sakin hocam. ayırın beyler.

  • @melihtopbas2736
    @melihtopbas2736 2 роки тому

    Hocam veritabanına kendi oluşturduğumuz viewmodeli eklemek istersek nasıl bir yol izleyeceğiz?
    Örnek veriyorum controller'a gönderdiğim model -> (PersonelAddViewModel model){
    db.Personel.Add(model);
    }
    dediğim taktirde Add kısmında hata verecek buna nasıl bir çözüm verebiliriz?