/ / Ako zatvoriť pripojenie SQL v Entity Framework? - c #, sql-server, entita-framework, asp.net-mvc-4, entity-framework-5

Ako zatvoriť pripojenie SQL v Entity Framework? - c #, sql-server, entita-framework, asp.net-mvc-4, entity-framework-5

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:

  1. Používanie kľúčového slova using
  2. 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ď č. 1

Kontrolé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.