【问题标题】:Can't create migration because EntityFramework.Design package isn't recognized无法创建迁移,因为无法识别 EntityFramework.Design 包
【发布时间】:2019-07-17 08:26:53
【问题描述】:

我安装了 EntityFrameworkCore.Design 运行以下内容。

Install-Package Microsoft.EntityFrameworkCore.Design -Version 3.0.0-preview6.19304.10

好像已经安装好了,在VS中可以看到如下内容。

但是,当我尝试使用

创建迁移时
dotnet ef migrations add Init

我等待了很长时间,然后出现以下错误。

您的启动项目“Web”未引用 Microsoft.EntityFrameworkCore.Design。此包是 Entity Framework Core Tools 工作所必需的。确保您的启动项目正确,安装包,然后重试。

当我检查 Web.proj 文件时,我看到了以下部分。

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.0.0-preview6.19307.2" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0-preview6.19304.10">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0-preview6.19304.10" />
  <PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc2" />
  <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0-rc2" />
</ItemGroup>

如何确保电脑能看到包裹?

【问题讨论】:

  • 你在那个解决方案中有其他项目吗
  • @CodeNameJack 不。我最初有几个,但意识到复杂性太高了,所以删除了它们。您是否认为 VS 不知何故跌跌撞撞并保留了其他参考资料?我检查了 SLN 文件,没有发现任何特别之处。
  • 有时我们会尝试将迁移应用于错误的项目。特别是如果您在 Web 以外的某个项目中进行迁移。
  • @CodeNameJack 啊,对。这个错误很常见,是的。我在测试的第一件事就想到了它。伟大的思想都一样,对吧?但是不,只有一个项目,包管理器窗口中的下拉菜单显示 Web,我还导航到该目录到 PWD 显示 ../Web 并且我通常指定 --项目网站。不过第一枪不错。 :)
  • 那么也许这次谈话会帮助下一个人来这里。 :)

标签: c# .net-core entity-framework-core .net-core-3.0 ef-core-3.0


【解决方案1】:

您需要参考其他软件包才能使迁移工作, 添加:

Microsoft.EntityFrameworkCore.Tools

将其添加到具有数据上下文的项目中。

【讨论】:

  • 我对您添加 Microsoft.EntityFrameworkCore.SqlServer 的建议感到困惑。你是说我应该复制 PROJ 文件中的行(它已经列在项目组中,倒数第三个,解决方案中只有一个项目,所以这是上下文定义所在的位置,继承自 DbContext)。还是您错过了那条线,我应该只添加工具?这些包绝对应该包含在一个常见的、单一安装样式的东西中……您是否参考了 MSDN 上要添加的内容的完整列表或其他内容?我还没有找到这样的东西。
  • Microsoft.EntityFrameworkCore.SqlServer ,可能我没注意到你已经拥有它。
  • 这些东西真的应该捆绑在一起,这样人们就不必思考、记住和沮丧。 .NET 的卓越和优势在于易用性。微软为我提供了为我做事的工具,我可以专注于酷、有趣、复杂的事情。那是他们在 2001 年发布 .NET 0.9 时达成的协议,我认为结果相当不错。不要对像我这样的老人大发雷霆,现在...... :)
  • 我认为我们可以原谅 MS。 Dot Net 核心变化如此之快,以至于他们可能不确定要捆绑什么。他们已经有一个核心捆绑包。但是是的,这些文档必须改进。关于 EFCore、Identity、Startup.cs 的许多事情并不直观。我看到你至少大摇大摆,这对很多人来说设置起来很棘手。
猜你喜欢
  • 2017-04-03
  • 2021-12-14
  • 2018-06-27
  • 2016-11-05
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
相关资源
最近更新 更多