我无法在ASP.NET Core中创建迁移.解决方案是什么



Visual Studio 2019社区。我想创建一个表来创建迁移并连接SQL Server 2014。但当我运行时

add-migrations AddMusicStoreToDb

我得到一个错误:

添加迁移:术语"添加迁移"未被识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

在第1行:1个字符:1
+add migrations AddMusicStoreToDb
+~~~~~~
+CategoryInfo:ObjectNotFound:(add migrations:String([],CommandNotFoundException
+TullyQualifiedErrorId:CommandNotFoundException


appsettings.json:

{
"ConnectingStrings": {
"DefaultConnection": "Server=DESKTOP-NHG0GU1\SQLEXPRESS;Database=MusicStoreList  ;Trusted_Connection=True;MultipleActiveResultSets=true;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}

MusicStoreListContext.cs:

using Microsoft.EntityFrameworkCore;
namespace MusicStoreRazor.UI.Models
{
public class MusicStoreListContext:DbContext
{
public MusicStoreListContext(DbContextOptions<MusicStoreListContext> options):base(options)
{
}
public DbSet<Music> Musics { get; set; }
}
}

启动.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using MusicStoreRazor.UI.Models;
namespace MusicStoreRazor.UI
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MusicStoreListContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddRazorPages().AddRazorRuntimeCompilation();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
}

您是否已将这些必需的NuGet包安装到解决方案中,以便首先在asp.net核心代码中执行与数据库相关的操作?

1.Microsoft.EntityFrameworkCore.SqlServer:为实体框架核心的CRUD操作提供与SQL Server连接的类

2.Microsoft.EntityFrameworkCore.Tools:帮助处理与数据库相关的活动,如添加迁移、脚本迁移、获取数据库上下文、更新数据库等

如果没有,则使用包管理器控制台或NuGet包管理器安装这些包。

您需要在命令前面加上dotnet ef

  1. dotnet ef migrations add AddMusicStoreToDb
  2. dotnet ef database update

https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/?tabs=dotnet-核心cli

我删除了实体框架6,并得到了一个解决方案,感谢