45

我正在使用Visual Studio 2015和 dotnet core 并尝试使用 Sqlite 和本文档/教程开发一个 EF Core Code First 项目,该文档/教程也使用 Sqlite => NET Core - New Database

当我尝试通过发出以下命令从命令行添加初始迁移(我被 CD 编辑到我的数据模型项目所在的文件夹中)时

dotnet ef migrations add InitialMigration

...我收到以下错误。

在此处输入图像描述

没有找到项目。更改当前工作目录或使用 --project 选项。

我什至尝试使用这样的--project选项。

> dotnet --project "C:\Shiva\EF\EFCFSqlite.Data.xproj"  ef migrations add InitialMigration

但这给出了以下错误。

Unknown option: --project
.NET Command Line Tools (1.0.0-preview2-003131)
Usage: dotnet [host-options] [command] [arguments] [common-options]

我注意到文档正在使用.csproj文件,而我的项目正在显示xproj文件。文档还提到了一些关于不再使用的内容project.json:(

这是我的project.json文件。

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.1",
    "Microsoft.EntityFrameworkCore.Sqlite.Design": "1.1.1",
    "NETStandard.Library": "1.6.1"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
  },
  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }

发生了什么变化?我们是否别无选择,只能安装 Visual Studio 2017并从头开始?project.json和所有其他的东西都不再受尊重了吗?

如果是这样的话,对我来说似乎是一个巨大的变化:(

4

9 回答 9

76

有时您需要更改控制台/终端中的当前目录,例如:

PM> cd E:\Projects\CrossTest\
PM> dotnet ef migrations add InitialMigration

并对齐您的软件包版本。 使用 preview1 包或 preview2。不支持这些的混合。

于 2018-06-10T03:53:54.437 回答
32

它只是意味着

您不在当前项目目录中

使用this搭建现有的 MySql 数据库时,我遇到了同样的问题。

我正在执行的命令:

dotnet ef dbcontext scaffold "Server=123.1.1.1;Uid=abc;Pwd=abc;Database=myDB;Connection Timeout=20;Persist Security Info=False;Port=3306;Allow User Variables=True;Connect Timeout=120;" MySql.Data.EntityFrameworkCore -o Models

导致同样的错误,然后我检查了包管理器控制台中的当前工作目录,发现不正确。

就我而言

在此处输入图像描述

意味着我不在当前项目目录中,然后在切换目录之后

cd SSGCApp

现在您在项目目录中,可以运行命令。

于 2019-09-25T10:18:39.797 回答
15

代替:

"tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
  },

尝试:

"tools": {
      "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.0.0-preview3-final"
  }},
于 2017-03-24T07:35:54.277 回答
12
  1. 添加nuget包Microsoft.EntityFrameworkCore.Tools
  2. 添加nuget包Microsoft.EntityFrameworkCore.Design
  3. 右键单击您的项目文件,选择Edit并将以下内容添加到ItemGroup包含PackageReference节点的文件中

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />

(您可以在 Nuget 包管理器中找到最新版本)

  1. 打开包管理控制台:Tools->Nuget Package Manager->Package Manager Console
  2. 类型cd {path where your csproj file resides}(这很重要)
  3. 现在输入dotnet ef migrations add InitialMigration
于 2018-08-26T17:17:06.660 回答
2

刚遇到类似的问题。通过降级到 1.0.0-preview3-final 修复

"tools": {
     "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",    
}

并将 --project 参数更改为--startup-project

dotnet ef --startup-project <PATH_TO_PROJECT_DIRECTORY> migrations add <MIGRATION_NAME>

在 global.json 中,我还将版本降级为

 "sdk": {
     "version": "1.0.0-preview2-003131"
 }

这可能是迁移到 csproj 之前的临时解决方法。

于 2017-03-28T09:32:18.680 回答
1

显然,这听起来可能很有趣,但就我而言,当我收到此错误时,我让应用程序的服务器端运行。基本上,确保您的应用在尝试创建迁移时根本没有运行。正如我所说,对我来说,这就是治疗方法。对于那些无法通过遵循标记的答案来修复它的人来说,这可能是一些建议。

于 2021-01-18T17:56:25.220 回答
0

只需简单地使用这个命令。

Add-Migration InitialCreated -c bodoContext

不用担心。

于 2021-10-14T05:14:09.503 回答
0

dotnet-ef 命令已移动。

您需要 在 project.json 中的依赖项中添加对Microsoft.EntityFrameworkCore.Tools.DotNet Microsoft.EntityFrameworkCore.Design的引用,然后将Microsoft.EntityFrameworkCore.Tools.DotNet添加到工具部分,您应该一切顺利。

引自:http ://errummwelluhh.blogspot.com

于 2017-05-09T20:10:52.060 回答
-1

添加引用 Microsoft.EntityFrameworkCore.Design 和 Microsoft.EntityFrameworkCore.Tools

然后运行:

dotnet-ef 迁移添加 InitialCreate --project ProjectName

或者

dotnet ef migrations add InitialCreate --project ProjectName
于 2021-08-14T13:35:53.857 回答