2015-05-15 13 views
5

Zwykle używam tego koduEF Aktualizacja za pomocą EntityState.Modified

Member member = ctx.Members.Find(id); 
member.Name = txtName.Text; 
ctx.Entry(member).State = EntityState.Modified; 
ctx.SaveChanges(); 

gdy chcę zaktualizować model używając Entity Framework. Znalazłem przykład na SO, który nie używa EntityState.Modified do aktualizacji modelu. Próbuję usunąć linię i nadal działa. Jakie są zalety i wady: EntityState.Modified i nie używają EntityState.Modified?

Uwagi: Używam Entity Framework 6 kod najpierw w WinForms

Odpowiedz

9

EntityState. Zmodyfikowany jest bezużyteczny w twoim przypadku, ponieważ podmiot twój ar Aktualizacja jest już śledzona przez kontekst podczas pobierania z kontekstu.

Czy trzeba go w następującym scenariuszu, w którym nie odzyskać swoją jednostkę z kontekstu:

Member member = new Member({Id=1, Name="member"}) ; 
context.Entry(member).State = EntityState.Modified; 
context.SaveChanges(); 

Ponadto, jak określono w poprzedniej odpowiedzi, context czasami śledzi jedynie ograniczony „obraz” bazy danych i dlatego musisz ręcznie zainicjować śledzenie, jak powyżej.

Microsoft doc

2

Jeśli używasz śledzenia obiektów następnie zmianę proxy słuchać właściwości zmian i kontekście Update automatycznie, co jest bardzo przydatne w MVVM, gdzie po prostu związania właściwości kontrole i nie trzeba pisać kodu za zaktualizować kontekst

Jeśli nie używasz śledzenia zmian (na przykład, gdy masz do czynienia z dużą ilością podmiotów) trzeba aktualizować kontekst siebie

4

jak inne chłopaki wspominali swój kontekst śledzi zmiany do obiektu automatycznie.

Uważam, że jest to bardziej użyteczne, na przykład, gdy używam return json do kontrolera mvc, w którym oryginalny obiekt traci śledzenie zmian po konwersji do json dla widoku. W takim przypadku przed zapisaniem zmian muszę konkretnie ustawić stan obiektu.

Powiązane problemy