將 EF6 程式碼型模型移植到 EF Core

如果您已閱讀所有注意事項並準備好移植,以下是協助您開始使用的一些指導方針。

安裝 EF Core NuGet 套件

若要使用 EF Core,請安裝您想要使用之資料庫提供者的 NuGet 套件。 例如,以 SQL Server 為目標時,您會安裝 Microsoft.EntityFrameworkCore.SqlServer 。 如需詳細資訊,請參閱 資料庫提供者

如果您打算使用移轉,則也應該安裝 Microsoft.EntityFrameworkCore.Tools 套件。

您可以讓 EF6 NuGet 套件 (EntityFramework) 保持安裝,因為 EF Core 和 EF6 可以在相同的應用程式中並存使用。 不過,如果您不想在應用程式的任何區域中使用 EF6,則卸載套件將有助於在需要注意的程式碼片段上提供編譯錯誤。

交換命名空間

您在 EF6 中使用的大部分 API 都位於 System.Data.Entity 命名空間中(和相關子命名空間)。 第一個程式碼變更是交換至 Microsoft.EntityFrameworkCore 命名空間。 您通常會從衍生的內容程式碼檔案開始,然後從該處解決編譯錯誤。

內容組態(連線等)

如設定資料庫連線 中所述 ,EF Core 在偵測要連線的資料庫方面具有較少的魔力。 您必須覆寫 OnConfiguring 衍生內容上的 方法,並使用資料庫提供者特定的 API 來設定資料庫的連線。

大部分的 EF6 應用程式會將連接字串儲存在應用程式 App/Web.config 檔案中。 在 EF Core 中,您會使用 ConfigurationManager API 讀取此連接字串。 您可能需要新增架構元件的參考 System.Configuration ,才能使用此 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);
    }
}

更新您的程式碼

此時,處理編譯錯誤並檢閱程式碼,以查看行為變更是否會影響您。

現有的移轉

將現有的 EF6 移轉至 EF Core 並沒有任何可行的方法。

可能的話,最好假設所有先前的 EF6 移轉都已套用至資料庫,然後使用 EF Core 從該點開始移轉架構。 若要這樣做,在模型移植到 EF Core 之後,您會使用 Add-Migration 命令來新增移轉。 接著,您會從 Up Scaffolded 移轉的 和 Down 方法中移除所有程式碼。 後續的移轉將會與建立初始移轉時的模型進行比較。

測試埠

只是因為您的應用程式會編譯,並不表示它已成功移植到 EF Core。 您必須測試應用程式的所有區域,以確保沒有任何行為變更對您的應用程式造成負面影響。

最後,檢閱 移植時 要考慮的詳細案例,以取得程式碼中特定案例和案例的更多建議。