Přenos modelu založeného na kódu EF6 na EF Core
Pokud jste si přečetli všechny upozornění a jste připraveni k portu, tady jsou některé pokyny, které vám pomůžou začít.
Instalace balíčků NUGet EF Core
Pokud chcete použít EF Core, nainstalujte balíček NuGet pro zprostředkovatele databáze, kterého chcete použít. Například při cílení na SQL Server byste nainstalovali Microsoft.EntityFrameworkCore.SqlServer
. Podrobnosti najdete v tématu Poskytovatelé databází.
Pokud plánujete používat migrace, měli byste balíček nainstalovat Microsoft.EntityFrameworkCore.Tools
také.
Balíček NuGet EF6 (EntityFramework) je v pořádku nechat nainstalovaný, protože EF Core a EF6 je možné používat souběžně ve stejné aplikaci. Pokud ale nemáte v úmyslu používat EF6 v žádné oblasti aplikace, pak odinstalace balíčku pomůže dát chyby kompilace u částí kódu, které vyžadují pozornost.
Prohození oborů názvů
Většina rozhraní API, která používáte v EF6, je v System.Data.Entity
oboru názvů (a souvisejících dílčích oborech názvů). První změnou kódu je prohodit obor Microsoft.EntityFrameworkCore
názvů. Obvykle byste začali s odvozeným kontextovým souborem kódu a pak odsud pracovali a řešili chyby kompilace, když k nim dojde.
Konfigurace kontextu (připojení atd.)
Jak je popsáno při konfiguraci připojení k databázi, EF Core má méně magie při zjišťování databáze, ke které se má připojit. Budete muset přepsat metodu OnConfiguring
v odvozeného kontextu a použít rozhraní API specifické pro zprostředkovatele databáze k nastavení připojení k databázi.
Většina aplikací EF6 ukládá připojovací řetězec do souboru aplikacíApp/Web.config
. V EF Core si přečtete tuto připojovací řetězec pomocí ConfigurationManager
rozhraní API. Možná budete muset přidat odkaz na System.Configuration
sestavení architektury, aby bylo možné používat toto rozhraní API:
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);
}
}
Upozornění Nikdy neukládá hesla ani jiná citlivá data ve zdrojovém kódu nebo konfiguračních souborech. Produkční tajné kódy by se neměly používat pro vývoj ani testování. Tajné kódy by se neměly nasazovat s aplikací. Produkční tajné kódy by měly být přístupné prostřednictvím kontrolovaných prostředků, jako je Azure Key Vault. Testovací a produkční tajné kódy Azure je možné ukládat a chránit pomocí poskytovatele konfigurace služby Azure Key Vault.
Aktualizace kódu
V tomto okamžiku se jedná o řešení chyb kompilace a kontrolu kódu, abyste zjistili, jestli vás změny chování ovlivní.
Existující migrace
Neexistuje skutečně proveditelný způsob, jak přenést existující migrace EF6 do EF Core.
Pokud je to možné, je nejlepší předpokládat, že všechny předchozí migrace z EF6 byly použity do databáze a pak začít migrovat schéma z tohoto bodu pomocí EF Core. K tomu byste použili Add-Migration
příkaz k přidání migrace, jakmile se model portuje do EF Core. Pak byste odebrali veškerý kód z Up
vygenerované migrace a Down
metody vygenerované migrace. Následující migrace se budou porovnávat s modelem, když se tato počáteční migrace vygenerovala.
Otestování portu
Jenom proto, že se vaše aplikace zkompiluje, neznamená, že se úspěšně portuje do EF Core. Budete muset otestovat všechny oblasti aplikace, abyste měli jistotu, že žádné změny chování nebudou mít nepříznivý vliv na vaši aplikaci.
Nakonec si projděte podrobné případy, které byste měli zvážit při přenosu , a podívejte se na další rady týkající se konkrétních případů a scénářů v kódu.