Sdílet prostřednictvím


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.