2013-08-01 15 views
11

W odpowiedzi na odpowiedź Slauma do mojego pytania about running applications that use EF on Windows XP jestem konwersji mój wniosek z powrotem z Entity Framework 5.0 w użyciu Entity Framework 5.0 i ramową target .NET 4.0 (zwany również Entity Framework 4.4)Jak mogę zaimplementować DBSet.AddOrUpdate w Entity Framework 4.4?

jednak spotykam się następujący błąd;

System.Data.Entity.DbSet<MyEntity> does not contain a definition for AddOrUpdate 
and no extension method of a type System.Data.Entity.DbSet<MyEntity> accepting a 
first argument of type System.Data.Entity.DbSet<MyEntity> could be found. 
(Are you missing a using directive or assembly reference) 

Próbowałem wyszukać fragmenty tego komunikatu o błędzie, ale nie mam wiele sukcesów. dziwo 4,4 nawet nie wspomniano in this Microsoft link Nie ma nawet tag więc dla EF4.4

Odpowiedz

29

Należy dodać ...

using System.Data.Entity.Migrations; 

... do pliku z kodem mieć AddOrUpdate dostępne. Jest to extension method of IDbSet<T>, który jest zaimplementowany w klasie nazw IDbSetExtensions w przestrzeni nazw .

0

Kiedy enable migrations dla MVC5 aplikacji internetowych, można uzyskać następujące komentarz w metodzie siewu konfiguracji:

// You can use the DbSet<T>.AddOrUpdate() helper extension method 

Moja początkowa stab na to żeby użytkownik DbSet<MyEntity>.AddOrUpdate(). Doprowadzi to do tego samego komunikatu o błędzie (i słusznie), jak ten poruszony w tym pytaniu. Poprawka polega na przeczytaniu reszty komentarza i użyciu parametru kontekstu przekazanego do funkcji seed:

context.MyEntity.AddOrUpdate();