2016-02-15 42 views
5

Czy istnieje punkt, aby zapisać zmiany po akcji tylko do odczytu? Encje są ładowane do pamięci podręcznej, ale nic się nie zmienia, czy zmiany powinny zostać wywołane przed utylizacją?Podmiot struktura zapisać zmiany

Odpowiedz

4

Od doc (DbContext.SaveChanges):

Zapisuje wszystkie zmiany dokonane w tym kontekście do podstawowej bazy danych.

Nie ma sensu dzwonić pod numer SaveChanges, jeśli nie wprowadzono żadnych zmian w kontekście.

Możesz przeczytać więcej na ten temat w szczegółach here

Jednostka może być w jednym z pięciu stanów określonych przez wyliczenie EntityState. Te stany to:

  • Dodano: jednostka jest śledzona przez kontekst, ale jeszcze nie istnieje w bazie danych
  • Niezmieniony: jednostka jest śledzona przez kontekst i istnieje w bazie danych, a jej majątek wartości nie uległy zmianie od wartości w bazie danych
  • Zmodyfikowano: obiekt jest śledzony przez kontekst i istnieje w bazie danych, a niektóre lub wszystkie jego wartości właściwości zostały zmienione
  • Usunięte: jednostka jest śledzona przez kontekst i istnieje w bazie danych, ale został zaznaczony do usunięcia z bazy danych przy następnym zapisaniu zmian nazywa
  • Wolnostojący: jednostka nie jest śledzona przez kontekst

SaveChanges robi różne rzeczy dla podmiotów w różnych stanach:

  • niezmienione podmioty nie są dotknięte SaveChanges. Aktualizacje nie są wysyłane do bazy danych dla jednostek w stanie niezmienionym.
  • Dodane jednostki są wstawiane do bazy danych, a następnie stają się niezmienione, gdy zwraca SaveChanges.
  • Zmodyfikowane jednostki są aktualizowane w bazie danych, a następnie stają się niezmienione, gdy zwraca SaveChanges.
  • Usunięte obiekty są usuwane z bazy danych, a następnie są odłączane od kontekstu.
0

Nie trzeba zadzwonić SaveChanges() chyba zrobić żadnej Add lub Update w Jednostce.