我有一个EF Core项目,我最近升级到1.1。一切都很好......直到我尝试添加迁移。在命令行上执行dotnet ef现在会生成一个关于无法找到ef模块/程序的错误。
稍微深入研究一下,我发现EF Core 1中存在重大变化 - > 1.1涉及工具的过渡。在project.json中,您必须替换此依赖项:
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
与
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final",
不幸的是......当我这样做时,软件包更新失败,并显示错误消息,即此版本的工具不支持net46。由于我正在使用的某些库,我必须运行它。
这是整个project.json文件:
"version": "1.0.0-*",
"dependencies": {
"ConnellDataCore": "1.0.0-*",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
"Microsoft.EntityFrameworkCore": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final",
"Microsoft.Extensions.Configuration": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Serilog": "2.3.0"
},
"buildOptions": {
"emitEntryPoint": true,
"xmlDoc": false
},
"frameworks": {
"net46": {
"frameworkAssemblies": {
"System.IO.Compression": "4.0.0.0"
}
}
},
"tools": {
}
我还应该指出数据库是在一个独立的程序集中定义的,所以我不得不使用“创建一个虚拟的静态Program :: Main()”技巧,以及“创建一个临时的上下文工厂” “技巧。
如何回到原来的位置,能够将迁移添加到我的EF Core数据库?
答案 0 :(得分:1)
这是2017年2月初的已知错误。解决方法是恢复到早期版本的工具(在project.json文件中):
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"
另请注意,程序集路径已从Microsoft.EntityFrameworkCore更改为Microsoft.EntityFrameworkCore。 Tools.DotNet 。工具。
最后,在我的特定情况下,我错误地将引用包含在project.json文件的dependencies部分中。它们确实属于工具部分:
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"
}