EF Core:Scaffold DbContext 持续失败

12
官方 ASP.Net Core 表示,以下错误可通过重新启动 Visual Studio 来解决:
 Scaffold-DbContext : The term 'Scaffold-DbContext' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

但是该命令一直无法执行。

我按照 ASP.Net Core 在线文档提供的示例,在程序包管理器控制台中运行它。

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

请尝试在 PowerShell 窗口中执行该命令(首先进入项目文件夹)。 - Joseph Wu
2个回答

6

我遇到了同样的问题。对我来说,缺少的是 EntityFrameworkCore.Tools,并且没有通过NuGet正确安装。

在您的包管理器控制台中运行以下命令( 工具 > NuGet 包管理器 > 包管理器控制台):

Install-Package Microsoft.EntityFrameworkCore.SqlServer –Pre 
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre 
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design –Pre

然后在 project.json 文件中添加了以下内容:

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
}

重要!请确保此版本与 "dependencies" 包(也在 project.json 中)匹配。在此示例中,"1.1.0-preview4-final"也应在 dependencies 中使用。

如果问题仍然存在,请尝试恢复您的 ef 运行时,可参考以下指南:https://github.com/aspnet/EntityFramework/issues/5549


3

在创建新的 ASP.NET Core 1.1 项目时,我通常会从以下步骤开始,这样可以节省很多时间。如果你按照步骤1和步骤2后无法立即使用,请尝试重新启动Visual Studio并继续步骤2。

步骤1

使用以下内容替换project.json文件,并还原包:

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "NETStandard.Library": "1.6.1",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.1.0"
    }
  },
  "frameworks": {
    "netcoreapp1.1": {
      "imports": "dnxcore50"
    }
  },
  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
  }
}

步骤二

在程序包管理器控制台中运行您的查询。下面的查询将连接到TestServer中的TestDb数据库。

Scaffold-DbContext "Data Source=TestServer;Initial Catalog=TestDb;Persist Security Info=True;User ID={Username};Password={Password}" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force -v -t dbo.Table1, dbo.Table2, dbo.Table3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接