IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Entity framework dispose kolekce v objektu

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
n5ver
Člen
Avatar
n5ver:8.4.2016 17:23

Ahoj, mám přes Entity framework načtené objekty otázek. Každá otázka má kolekci odpovědí. Načítám pouze otázku a odpovědi se načtou sami. Když otázku upravím a odešlu do jiné třídy, kde se mi mají uložit do databáze, je kolekce odpovědí disposnutá. Před odesláním nebyla (kontroloval jsem debuggerem). Nevíte někdo, jak tomu zabránit?

 
Odpovědět
8.4.2016 17:23
Avatar
Marian Benčat:30.6.2016 20:11
  1. odpovedi se nactou samy, pokud mas zapnuty lazy loading. doporucuji ho vypnout, protoze je nevykonny, nebezpecny a do znacne miry jde o antipattern, jelikoz exposuje databazi.
  2. U lazy loadingu (pri dynamic proxies) NESMIS nic kontrolovat debuggerem, protoze v okamziku, kdy ukazes mysi na tu instanci, tak se ti automaticky zavolají gettery a ty data se nactou..

v tvem pripade dost pravdepodobne nedochazi k disposu jak si myslis.. ale ve skutecnosti to co se ti deje je, ze ty ukazes mysi na ten objekt jeste dokud existuje DB Context, ze ktereho si vytahl Otazku,. .tudiz se v poradku nactou ty odpovedi.. ale kdyz na to neukazes v debuggeru, tak tam posles tu entitu, ale ten moment uz je treba mimo scopy DBContextu (takze uz nefunguje lazy load) a proto jsou ty relacni entity null.

Ns toto pozor,.. idealne poeuzivt lazy loading a dynamic proxies.. ono je to super, le musis dobre vedet co delas a jak to uvnitr funguje ;-)

Nahoru Odpovědět
30.6.2016 20:11
Totalitní admini..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.