首页 > 解决方案 > 我无法在 ASP.NET Core 中创建迁移。解决办法是什么?

问题描述

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

add-migrations AddMusicStoreToDb

我收到一个错误:

add-migrations:术语“add-migrations”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

在行:1 char: 1
+ add-migrations AddMusicStoreToDb
+ ~~~~~~~~~~~~~~~
+ CategoryInfo: ObjectNotFound: (add-migrations: String) [], CommandNotFoundException
+ FullyQualifiedErrorId: 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();
            });
        }
    }
}

标签: c#sql-serverentity-framework-core

解决方案


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

1、Microsoft.EntityFrameworkCore.SqlServer:提供类连接SQL Server对Entity Framework Core进行CRUD操作

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

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


推荐阅读