Vysvetlím celú situáciu v prípade, že by niekto mal lepšie riešenie ako ten, ktorý som dostal.
Po prvé, to sú technológie, ktoré používam:
SQL Server 2012 Entity Framework 5 ASP.NET MVC 4 Repository Pattern for EF5 developed by myself
Chystám sa chyba služby SQL Server 19 (Physicalspojenie neexistuje) neustále v niektorých častiach môjho kódu. Z môjho výskumu som zistil, že neviem, či je spojenie po jeho použití zatvorené. Možné alternatívy som našiel:
- Používanie kľúčového slova
using
- Ukončenie spojenia po návrate mojej akcie
Odstránil som prvý prístup, pretože kód je dosť veľký, takže hľadanie každého miesta, ktoré používa môj kontext a jeho zmenu, by bolo v tomto momente mimo dosahu.
Takže som premýšľal nad druhým prístupom, len by som potreboval vytvoriť atribút, ktorý by zdobil mojich kontrolórov a zakaždým action
vrátené by som zabezpečil, že pripojenie je zatvorené / zlikvidované neskôr. Že už viem, ako to urobiť:
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
//code to get the current running connection
}
}
Moja otázka je: ako môžem získať súčasné rámcové rozhranie entity a zavrieť ho z môjho atribútu?
Akákoľvek pomoc je veľmi ocenená, vďaka!
odpovede:
0 pre odpoveď č. 1Kontroléry sú konkretizované a určenékaždá akcia vyvolaná rámcom. Môžete bezpečne vytvoriť rámcový kontext entity v konštruktérovi radiča, uložiť ho do poľa kontroléra a zlikvidovať ho v riadiacich jednotkách " Dispose
metóda.