首页 > 解决方案 > 在 EF Core 迁移管理 CLI 中使用 -Context/--context 标志指定通用 DbContext

问题描述

IdentityDbContext<TUser, IdentityRole, string>使用类似的命令时,如何在 EF Core CLI 中指定通用且继承的上下文Add-Migration

我的应用程序中有 2 个DbContext类(在同一个目录和命名空间中),主要的一个是 named ApplicationDbContext,另一个是RemoteDbContext. 问题是,上下文ApplicationDbContext是通用的并且继承IdentityDbContext<TUser, IdentityRole, string>

public partial class ApplicationDbContext<TUser> : IdentityDbContext<TUser, IdentityRole, string>
        where TUser : IdentityUser

它配置在Startup.ConfigureServices()

services.AddDbContext<ApplicationDbContext<ApplicationUser>>(options =>
    options.UseSqlServer(
        Configuration.GetConnectionString("MainConnection")));

RemoteDbContext只是继承DbContext

因为有 2 个上下文,所以在使用任何 EF Core CLI 命令(如Add-Migrationor )时,我必须指定一个上下文Script-Migration,并且使用-Context RemoteDbContext按预期工作。但是,当我尝试指定通用上下文时,ApplicationDbContext我收到类似于以下内容的错误消息:

未找到名为“ApplicationDbContext”的 DbContext。

我已经尝试过ApplicationDbContext, ApplicationDbContext<TUser> ApplicationDbContext<ApplicationUser>,甚至ApplicationDbContext`1基于包管理器控制台提供的选项卡完成(下面的屏幕截图)。

PMC 选项卡完成

我也尝试过使用 .NET Core CLI,如此处 Microsoft 文档中所述。结果相同。

暂时我要注释掉所有的RemoteDbContext引用,DbContext在项目中只运行1个命令,非常耗时。

我正在使用 .NET 5、EF Core、VS 19。

标签: c#.net-coreentity-framework-coredbcontextpackage-manager-console

解决方案


推荐阅读