【发布时间】:2020-04-17 10:09:26
【问题描述】:
我们正处于将大型解决方案移植到 .Net Core(从 4.7.2 开始)的最后阶段,但我们还没有准备好迁移到 Entity Framework Core,因为我们使用了 table-per-类型层次结构等。我们首先使用 EF 代码。因此,包含我们的 DbContext 和 EF 迁移的项目现在正在运行 .netstandard2.1 并引用 EF 6.4(从 v6.3 开始,它显然支持 .net 核心)。我了解 EF 工具从 v6.2 -> v6.4 更改,因此我们创建 EF 迁移的传统方式现在导致包管理器控制台中出现以下错误:
添加-迁移测试-项目数据
项目“数据”以框架“.NETStandard”为目标。实体框架包管理器控制台工具不支持此框架。
经过一番调查,我遇到了this,这表明您需要使用 .Net Core 程序集作为虚拟启动项目。创建一个 .netcore 3.1 控制台应用程序项目(称为 Data_Startup,它引用 Data 项目)并稍微修改我的命令后,我现在收到以下错误:
dotnet ef 迁移添加 TEST --project Data --startup-project Data_Startup -c CustomContext
找不到名为“CustomContext”的 DbContext。
这似乎至少是在尝试迁移,但我现在卡住了。我已经尝试使用命名空间完全限定 DbContext 并将 DBContext 类作为“链接文件”添加到新的虚拟项目中,但我遇到了同样的错误。
我也尝试过使用 EF 6.4 工具: dotnet C:\Users\xxxx.nuget\packages\entityframework\6.4.0\tools\netcoreapp3.0\any\ef6.dll" 迁移添加 TEST --assembly Data
您的目标项目“数据”未引用 EntityFramework。此包是 Entity Framework Core Tools 工作所必需的。确保您的目标项目正确,安装包,然后重试。
...尽管它肯定是安装在 Data 项目中的!
我做错了什么?我实际上需要使用哪个工具?这个项目配置甚至可能吗?
【问题讨论】:
-
您应该在新的控制台应用程序中包含您的上下文,之后它将使用您提供的命令找到您的上下文。
-
我已经尝试过了,它会导致相同的行为 - 无论数据库上下文是作为链接文件还是具体文件添加。
-
@NickH 您的链接适用于 EF Core cli,而不适用于 EF 6.4
-
@smg 对不起 - 你是对的,虽然我已经尝试使用旧版本的工具但没有成功(出于不同的原因!)。我已更新问题以反映这一点。
标签: c# entity-framework entity-framework-6 entity-framework-migrations