Visual Studio代码实体框架核心添加迁移无法识别

问题描述 投票:13回答:3

我已经使用yoman通过Visual Studio代码编辑器生成ASP.Net Core Web API应用程序。作为参考,我按照本教程here

API工作正常。但是,我正在尝试将实体框架核心迁移与SQL Server一起使用。当我在Visual Studio代码终端中键入以下内容时:

Add-Migration MyDbInitialMigration

我收到以下消息:

'Add-Migration' is not recognized as an internal or external command, operable program or batch file.

我安装了Microsoft.EntityFrameworkCore.Tools: 1.1.0-preview4-final依赖项。我使用.Net核心项目管理器(Nuget)扩展来完成此操作。

在Visual Studio 2015中,此命令可从Package Manager控制台正常运行。

我假设使用Visual Studio Code的终端是个问题。但有谁知道如何在VS Code编辑器中使用EF Core Migrations?

谢谢你的帮助。

运行dotnet ef migrations add InitialCreate命令会产生以下错误:

No executable found matching command "dotnet-ef"

要解决这个问题,我需要安装以下依赖项,并将其添加到工具部分:

Microsoft.EntityFrameworkCore.Tools.DotNet
c# visual-studio-code entity-framework-core
3个回答
26
投票

添加新迁移的正确格式是dotnet ef migrations add yourMigrationName

并更新数据库是dotnet ef database update


0
投票

步骤1首先,我们需要以下列方式在* .csproj文件中添加引用

Bash /命令提示符中的第2步

dotnet恢复

第3步

dotnet ef migrations添加MyDbInitialMigration


0
投票

我在Mac上工作,所以默认安装Ruby。我的EF命令需要很多额外的参数--project--startup-project等。每次输入都很痛苦,所以我用rake来使这更容易。

在我的项目根目录中,我添加了一个名为rakefile的文件,其中包含以下内容:

desc "Add Migraion"
task :'add-migration' do
    ARGV.each { |a| task a.to_sym do ; end }  
    puts ARGV[1]
    sh "dotnet ef migrations add " + ARGV[1] + " --project MyProject.Data/MyProject.Data.csproj --startup-project MyProject.Web/MyProject.Web.csproj "
end

desc "Remove Migraion"
task :'remove-migration' do
    ARGV.each { |a| task a.to_sym do ; end }  
    puts ARGV[1]
    sh "dotnet ef migrations remove --project MyProject.Data/MyProject.Data.csproj --startup-project MyProject.Web/MyProject.Web.csproj"
end

desc "Update Database"
task :'update-database' do
    ARGV.each { |a| task a.to_sym do ; end }  
    puts ARGV[1]
    sh "dotnet ef database update --project MyProject.Data/MyProject.Data.csproj --startup-project MyProject.Web/MyProject.Web.csproj"
end

然后在命令行中运行以下命令:

rake add-migration <migrationName>
rake remove-migration
rake update-database
© www.soinside.com 2019 - 2024. All rights reserved.