EF Core 不支持对模型使用 EDMX 文件格式。 要移植这些模型,最佳方法是从应用程序的数据库中生成基于代码的新模型。
安装 EF Core NuGet 包
安装 Microsoft.EntityFrameworkCore.Tools
NuGet 包。
重新生成模型
现可使用反向工程功能基于现有数据库创建模型。
在包管理器控制台(“工具”–>“NuGet 包管理器”–> “包管理器控制台”)中运行以下命令。
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 之间的差异的完整指南。