You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Web API中通过DbContext更改迁移程序集报错求助

ASP.NET Core EF Core 迁移程序集不匹配问题解决

我在学习ASP.NET Core Web API,开发电影CRUD项目时,将DbContext及数据操作逻辑放在类库MovieManagementLibrary中,主项目MovieAPI通过依赖注入引用该类库。执行Entity Framework Core数据迁移时,出现如下错误:

目标项目'MovieAPI'与迁移程序集'MovieManagementLibrary'不匹配。请更改目标项目或迁移程序集。
通过DbContextOptionsBuilder更改迁移程序集,例如:options.UseSqlServer(connection, b => b.MigrationsAssembly("MovieAPI"))。默认情况下,迁移程序集是包含DbContext的程序集。
通过程序包管理器控制台的默认项目下拉列表更改目标项目,或在包含迁移项目的目录中执行"dotnet ef"命令。

我的DbContext代码如下:

using Microsoft.EntityFrameworkCore;
using MovieManagementLibrary.Models;

namespace MovieManagementLibrary.Data
{
    public class MovieDbContext : DbContext
    {
        public MovieDbContext(DbContextOptions<MovieDbContext> options) : base(options)
        {
        }

        public DbSet<Movie> Movies { get; set; }
    }
}

解决方法

方法一:指定迁移程序集到主项目

在主项目MovieAPI的配置文件(如Program.cs)中,注册DbContext时显式指定迁移程序集为MovieAPI,让EF Core将迁移文件生成到主项目中:

builder.Services.AddDbContext<MovieDbContext>(options =>
    options.UseSqlServer(
        builder.Configuration.GetConnectionString("DefaultConnection"),
        b => b.MigrationsAssembly("MovieAPI") // 指定迁移程序集为主项目名称
    ));

配置完成后,直接在主项目中执行迁移命令即可。

方法二:修改迁移命令的目标项目

包管理器控制台(Visual Studio)

  1. 打开包管理器控制台,将默认项目下拉选项切换为MovieManagementLibrary
  2. 执行迁移命令:
Add-Migration InitialCreate
Update-Database

dotnet CLI

  1. 打开命令行,切换到MovieManagementLibrary类库的目录
  2. 执行以下命令(通过--startup-project指定主项目作为启动依赖):
dotnet ef migrations add InitialCreate --startup-project ../MovieAPI
dotnet ef database update --startup-project ../MovieAPI

内容的提问来源于stack exchange,提问作者el halcon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:55:17