Przenoszenie modelu opartego na kodzie EF6 do platformy EF Core
Jeśli zapoznasz się ze wszystkimi zastrzeżeniami i wszystko jest gotowe do przeniesienia, oto kilka wskazówek, które pomogą Ci rozpocząć pracę.
Instalowanie pakietów NuGet platformy EF Core
Aby użyć programu EF Core, zainstaluj pakiet NuGet dla dostawcy bazy danych, którego chcesz użyć. Na przykład podczas określania wartości docelowej dla programu SQL Server należy zainstalować program Microsoft.EntityFrameworkCore.SqlServer
. Aby uzyskać szczegółowe informacje, zobacz Dostawcy baz danych.
Jeśli planujesz używać migracji, należy również zainstalować Microsoft.EntityFrameworkCore.Tools
pakiet.
Można pozostawić zainstalowany pakiet NuGet EF6 (EntityFramework), ponieważ programy EF Core i EF6 mogą być używane obok siebie w tej samej aplikacji. Jeśli jednak nie zamierzasz używać platformy EF6 w żadnych obszarach aplikacji, odinstalowanie pakietu pomoże zapewnić błędy kompilacji na fragmentach kodu, które wymagają uwagi.
Zamiana przestrzeni nazw
Większość interfejsów API używanych w programie EF6 jest w System.Data.Entity
przestrzeni nazw (i powiązanych przestrzeniach nazw podrzędnych). Pierwsza zmiana kodu polega na zamianie Microsoft.EntityFrameworkCore
na przestrzeń nazw. Zazwyczaj zaczyna się od pochodnego pliku kodu kontekstu, a następnie pracy z tego miejsca, zwracając się do błędów kompilacji w miarę ich występowania.
Konfiguracja kontekstu (połączenie itp.)
Zgodnie z opisem w konfigurowaniu połączenia z bazą danych program EF Core ma mniej magii podczas wykrywania bazy danych w celu nawiązania połączenia. Należy zastąpić metodę OnConfiguring
w kontekście pochodnym i użyć interfejsu API specyficznego dla dostawcy bazy danych, aby skonfigurować połączenie z bazą danych.
Większość aplikacji EF6 przechowuje parametry połączenia w pliku aplikacjiApp/Web.config
. W programie EF Core odczytujesz tę parametry połączenia przy użyciu interfejsu ConfigurationManager
API. Aby móc korzystać z tego interfejsu System.Configuration
API, może być konieczne dodanie odwołania do zestawu platformy.
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
}
}
Aktualizowanie kodu
W tym momencie jest to kwestia rozwiązywania błędów kompilacji i przeglądania kodu, aby sprawdzić, czy zmiany zachowania będą miały wpływ na Ciebie.
Istniejące migracje
Nie istnieje realny sposób przenoszenia istniejących migracji EF6 do platformy EF Core.
Jeśli to możliwe, najlepiej założyć, że wszystkie poprzednie migracje z programu EF6 zostały zastosowane do bazy danych, a następnie rozpocząć migrację schematu z tego punktu przy użyciu programu EF Core. W tym celu należy użyć Add-Migration
polecenia , aby dodać migrację po przejściu modelu do platformy EF Core. Następnie usuniesz cały kod z Up
metod i Down
migracji szkieletu. Kolejne migracje będą porównywane z modelem, gdy migracja początkowa została utworzona szkieletem.
Testowanie portu
Tylko dlatego, że aplikacja jest kompilowana, nie oznacza, że została pomyślnie przekierowana do platformy EF Core. Należy przetestować wszystkie obszary aplikacji, aby upewnić się, że żadne ze zmian zachowania nie wpłynęło negatywnie na aplikację.
Na koniec zapoznaj się ze szczegółowymi przypadkami, które należy wziąć pod uwagę podczas przenoszenia , aby uzyskać więcej porad dotyczących konkretnych przypadków i scenariuszy w kodzie.