將 EF6 EDMX 型模型移植到 EF Core

EF Core 不支援模型的 EDMX 檔案格式。 移植這些模型的最佳選項是從應用程式的資料庫產生新的程式碼型模型。

安裝 EF Core NuGet 套件

安裝 Microsoft.EntityFrameworkCore.Tools NuGet 套件。

重新產生模型

您現在可以使用反向工程師功能,根據現有的資料庫建立模型。

在 封裝管理員 主控台中執行下列命令(工具 – > NuGet 封裝管理員 – > 封裝管理員 Console)。 如需建立資料表子集等命令選項,請參閱 封裝管理員主控台 (Visual Studio)

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

例如,以下是從 SQL Server LocalDB 實例上的 Blogging 資料庫建構模型的命令。

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

移除 EF6 模型

您現在會從應用程式中移除 EF6 模型。

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

更新您的程式碼

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

測試埠

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

其他考量

EF Core 不支援提供者, EntityClient 因此 任何 EntitySQL 查詢都必須遷移至 LINQ 或 FromRawSql

此外,不支援 EntityClient 連接字串

如需更多考慮,請閱讀 EF6 與 EF Core 之間差異的完整指南