我已经使用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
添加新迁移的正确格式是dotnet ef migrations add yourMigrationName
并更新数据库是dotnet ef database update
步骤1首先,我们需要以下列方式在* .csproj文件中添加引用
Bash /命令提示符中的第2步
dotnet恢复
第3步
dotnet ef migrations添加MyDbInitialMigration
我在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