将基于 EF6 EDMX 的模型移植到 EF Core

EF Core 不支持对模型使用 EDMX 文件格式。 要移植这些模型,最佳方法是从应用程序的数据库中生成基于代码的新模型。

安装 EF Core NuGet 包

安装 Microsoft.EntityFrameworkCore.Tools NuGet 包。

重新生成模型

现可使用反向工程功能基于现有数据库创建模型。

在包管理器控制台(“工具”–>“NuGet 包管理器”–> “包管理器控制台”)中运行以下命令。 请参阅包管理器控制台 (Visual Studio),获取用于设置一部分表的基架等的命令选项。

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

例如,以下命令用于在 SQL Server LocalDB 实例上根据博客数据库设置模型的基架。

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 之间的差异的完整指南。