Igor Kulman

LINQ: divný problém s cache

· Igor Kulman

Pri práci na projekte v ASP MVC a LINQ som narazil na zaujímavú “vlastnosť” LINQ, ktorá mi spôsobovala celkom problémy. V ASP.NET vždy používam Repository Pattern , každý objekt má svoju statickú Repository triedu a každá takáto statická Repository trieda obsahuje statický DataContext. Zistil som, že ak dve Repository pristupujú k tej istej tabuľke, môžu vznikať zaujímavé problémy.

Nech Post je tabuľka článok v stránok, kde články a stránky sú odlíšené pomocou stĺpca IsPage. Vytvorené PostRepository aj PageRepository pristupujú k tabuľke Post pomocou statických DataContext. Ak uložíte nejaký záznam pomocou PostRepository a snažíte sa ho natiahnuť pomocou PageRepository, nepodarí sa vám to, aj keď v databáze existuje. Príčinou je pravdepodobne nejaká cache.

Aby sa vám takáto situácia nestala, nekombinujte používanie Repository alebo ešte lepšie, požívajte jediný DataContext.