Udostępnij za pośrednictwem


Przenoszenie modelu opartego na technologii EF6 EDMX do platformy EF Core

Program EF Core nie obsługuje formatu pliku EDMX dla modeli. Najlepszą opcją przenoszenia tych modeli jest wygenerowanie nowego modelu opartego na kodzie z bazy danych dla aplikacji.

Instalowanie pakietów NuGet platformy EF Core

Microsoft.EntityFrameworkCore.Tools Zainstaluj pakiet NuGet.

Ponowne generowanie modelu

Teraz możesz użyć funkcji inżyniera odwrotnego do utworzenia modelu opartego na istniejącej bazie danych.

Uruchom następujące polecenie w konsoli Menedżer pakietów (Narzędzia —> NuGet Menedżer pakietów —> konsola Menedżer pakietów). Zobacz Menedżer pakietów Console (Visual Studio), aby uzyskać opcje poleceń do tworzenia szkieletu podzestawu tabel itp.

Scaffold-DbContext "<connection string>" <database provider name>

Na przykład poniżej przedstawiono polecenie tworzenia szkieletu modelu z bazy danych Blogging w wystąpieniu programu SQL Server LocalDB.

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

Usuwanie modelu EF6

Teraz można usunąć model EF6 z aplikacji.

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ć programu EF6 w żadnym obszarze aplikacji, odinstalowanie pakietu pomoże skoncentrować błędy kompilatora na fragmentach kodu, które wymagają uwagi.

Aktualizowanie kodu

W tym momencie jest to kwestia rozwiązywania błędów kompilacji i przeglądania kodu, aby sprawdzić, czy zmiany zachowania między ef6 i EF Core będą miały wpływ na Ciebie.

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ę.

Inne kwestie wymagające rozważenia

Program EF Core nie obsługuje dostawcy EntityClient , dlatego wszystkie zapytania EntitySQL muszą być migrowane do LINQ lub FromRawSql.

Ponadto nie ma obsługi parametry połączenia EntityClient.

Aby uzyskać więcej informacji, zapoznaj się z kompletnym przewodnikiem dotyczącym różnic między platformami EF6 i EF Core.