5 NAJCZĘSTSZYCH BŁĘDÓW w Entity Framework Core

✅ DOŁĄCZ DO SPOŁECZNOŚCI: www.modestprogrammer.pl/newsl... 🚀
Z tego odcinka dowiesz się jakie są najpopularniejsze błędy początkujących programistów przy pracy z Entity Framework Core w C#. Przedstawię Ci 5 najczęstszych błędów na które musisz uważać.
✅ Najlepsza ścieżka do zostania programistą: www.modestprogrammer.pl/mapa
✅ Szkolenie Zostań Programistą .NET: zostanprogramistadotnet.pl/
✅ Szkoła Entity Framework Core: szkolaentityframework.pl/
✅ Blog: www.modestprogrammer.pl​
✅ Koszulki programisty: sklep.modestprogrammer.pl
#entityframework #entityframeworkcore #popularnebłędy
00:00 Wprowadzenie
1:33 Problem N+1
6:17 SQL Injection
11:24 Nieznajomość IQueryable i IEnumerable
15:07 Nieużywanie transakcji gdy jest to konieczne
18:59 Niestosowanie projekcji danych
20:35 Podsumowanie

Пікірлер: 5

  • @markippo
    @markippo Жыл бұрын

    Cześć, Mam takie pytanie odnośnie klas modeli, które zawierają właściwości będące obiektami, jednocześnie nie mającymi swojej czystej reprezentacji w bazie - jako odrębne tabele. Np. mamy n tabel w bazie i każda z tych tabel ma jakieś standardowe dane dotyczące utworzenia wiersza, czy jego edycji (np. daty i użytkowników). I teraz z poziomu mojej klasy modelowej chciałbym sobie utworzyć 2 właściwości - CreationData, ModifcationData, będące instancjami tego w/w obiektu, jednak z poziomu tabeli powinny one być po prostu kolumnami. Da się to zrobić, czy np. powinienem sobie stworzyć interfejs i implementować go w każdej z klas, w których potrzebuję tego typu danych? W tych rozwiązaniach ORM zawsze zastanawia mnie właśnie ta zależność - jak sięgnąć po zagnieżdżony obiekt. Jak odnieść się do referencji - np. słownikowych. Na twoim przykładzie - wiadomo, że w samej tabeli books, chcę mieć kolumnę CategoryId, ale użytkownikowi chcę już prezentować jej nazwę.

  • @ModestProgrammer

    @ModestProgrammer

    Жыл бұрын

    Cześć. Czyli jak dobrze rozumiem, chciałbyś dodać do niektórych klas domenowych informacje o tym, kto i kiedy zmieniał dany rekord. To jest idealne miejsce, żeby skorzystać z dziedziczenia. Czyli najpierw tworzysz sobie klasę domenową, która zawiera te wspólne właściwości, tak jak np. tutaj: github.com/jasontaylordev/CleanArchitecture/blob/main/src/Domain/Common/BaseAuditableEntity.cs Następnie jeżeli chcesz, żeby twoja klasa domenowa miała takie właściwości, to wystarczy dziedziczyć po tej klasie, tak jak np tutaj: github.com/jasontaylordev/CleanArchitecture/blob/main/src/Domain/Entities/TodoItem.cs Przy okazji możesz sobie nadpisać metodę SaveChangesAsync w klasie ApplicationDbContext i wewnątrz uzupełniać te właściwości :)

  • @markippo

    @markippo

    Жыл бұрын

    @@ModestProgrammer dzięki. Faktycznie podejście z dziedziczeniem jest o wiele lepsze od interfejsu. Nie trzeba go za każdym razem implementować. Jeszcze jedno pytanie odnośnie relacji 1 do wielu. Czy za każdym razem w obiekcie 1 muszę mieć listę dla wielu? Np. Mam obiekt Item, który zawiera właściwość StatusId. Czy w obiekcie ItemStatus powinienem mieć listę Items, czy taka relacyjność przekłada się jedynie na jakieś specjalne przypadki - Po stronie bazy danych to prosta relacja słownikową. W tabeli Items znajduje się kolumna StatusId - a tabela ItemStatusId zawiera definicje tych ststusów. Podobnie jak w twoim przykładzie kategorie, gdzie obiekt kategorii zawiera kolekcję książek. Testuję .net Maui i postanowiłem przy okazji skorzystać z EFC. Wcześniej byłem w stosunku ORM nieufny. Miałem z nimi do czynienia jedynie w Pythonie i generalnie rzecz biorąc były koszmarnie niewydajne, zwłaszcza w operacjach zapisu (pomimo stosowania metod bulk insertowych).... 3h dla zrzucenia do bazy ok 1k plików JSON (o max wielkości 3mb) względem minut przy zastosowaniu opcji pośredniej - zrzut do csv i odpalenie procedury z bulkiem po stronie sql server.

  • @Kiolesis
    @Kiolesis3 жыл бұрын

    Polecam Panu wstawić rozdziały do filmu. Specjalnie dla Pana stworzyłem już taki rozdział, z którego może Pan skorzystać 😀 1:33 Błąd pierwszy 6:16 Błąd drugi 11:24 Błąd trzeci 15:07 Błąd czwarty 18:59 Błąd piąty Możliwe, że podałem zbyt późno rozdział z błędem pierwszym.

  • @ModestProgrammer

    @ModestProgrammer

    3 жыл бұрын

    Dzięki! Zaraz to zweryfikuje i wstawie w opis filmu :)