將 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);
}
}
警告 永遠不要將密碼或其他敏感數據儲存在原始程式碼或組態檔中。 生產秘密不應該用於開發或測試。 不應使用應用程式部署秘密。 生產秘密應該透過受控方式存取,例如 Azure 金鑰保存庫。 您可以使用 Azure 金鑰保存庫 組態提供者來儲存及保護 Azure 測試和生產秘密。
更新您的程式碼
此時,處理編譯錯誤並檢閱程序代碼,以查看行為變更是否會影響您。
現有的移轉
將現有的EF6移轉至 EF Core 並沒有任何可行的方法。
可能的話,最好假設所有先前的 EF6 移轉都已套用至資料庫,然後使用 EF Core 從該點開始移轉架構。 若要這樣做,在模型移植到 EF Core 之後,您會使用 Add-Migration
命令來新增移轉。 接著,您會從 Up
Scaffolded 移轉的 和 Down
方法中移除所有程式代碼。 後續的移轉將會與建立初始移轉時的模型進行比較。
測試埠
只是因為您的應用程式會編譯,並不表示它已成功移植到 EF Core。 您必須測試應用程式的所有區域,以確保沒有任何行為變更對您的應用程式造成負面影響。
最後,檢閱 移植時 要考慮的詳細案例,以取得程序代碼中特定案例和案例的更多建議。