Asp.Net MVC funkcja Dispose()

Asp.Net MVC funkcja Dispose()
S7
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 5 lat
  • Postów:287
0

Czy dobrą praktyką jest użycie funkcji Dispose() w modelu, np.

Kopiuj
[Table("Order")]
    public class Order
    {
        EntityDb db = new EntityDb(); 


        ............

         [NotMapped]
        public ICollection<EstateType> EstateTypes
        {
            get 
            {
                var ot = db.OrderTypes.ToList();                
                return ot;
            }        
        }  

    }

Jeśli tak, to jak to zrobić w modelu?
dzięki

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
1

Ale gdzie byś chciał mieć to Dispose i w jakim celu?
Dispose to raczej na kontekście EF trzeba wołać w obiektach wyższych warstw (serwisach bądź kontrolerach). Ale to i tak lepiej zostawić kontenerowi IoC.

S7
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 5 lat
  • Postów:287
0

Chodziło mi bardziej o zwolnienie "połączenia" (db) z bazą o ile poprawnie to nazywam. Jak sam widzisz mam metody, które pobierają z bazy dane i czy nie warto gdzieś użyć db.Dispose()? - dla zwolnienia zasobu.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:dzień
  • Lokalizacja:Wrocław
0

Jeżeli ręcznie otwierasz połączenie z bazą, to powinieneś je też ręcznie zamykać. Ale nie na poziomie klasy mapowanej na tabelę, tylko gdzieś wyżej, w miejscu, w którym kończysz operacje na bazie. Czyli w praktyce na koniec żądania, czyli wykonania akcji kontrolera (bo pewno korzystasz z EF bezpośrednio w kontrolerach, mam rację?).

S7
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 5 lat
  • Postów:287
0

Mam to w kontrolerze - masz rację. Chciałem się tylko upewnić. Dzięki @somekind

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.