c# - 在 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-Migration
or )时,我必须指定一个上下文Script-Migration
,并且使用-Context RemoteDbContext
按预期工作。但是,当我尝试指定通用上下文时,ApplicationDbContext
我收到类似于以下内容的错误消息:
未找到名为“ApplicationDbContext”的 DbContext。
我已经尝试过ApplicationDbContext
, ApplicationDbContext<TUser>
ApplicationDbContext<ApplicationUser>
,甚至ApplicationDbContext`1
基于包管理器控制台提供的选项卡完成(下面的屏幕截图)。
我也尝试过使用 .NET Core CLI,如此处 Microsoft 文档中所述。结果相同。
暂时我要注释掉所有的RemoteDbContext
引用,DbContext
在项目中只运行1个命令,非常耗时。
我正在使用 .NET 5、EF Core、VS 19。
解决方案
推荐阅读
- neo4j - Neo4j:放松下的慢匹配
- c# - API 端点中的“TimeSpan”.Net 数据类型不接受超过 24 小时。抛出验证错误
- multithreading - SCONS 构建失败(我使用的是 RT 线程)
- influxdb - 如何将 InfluxDB 表导入 QuestDB?
- c++ - 如何在 C++ 中使用 ncurses 打印 Unicode 字符?
- powerbi - 显示所有值的切片器 - Power BI Desktop
- c# - 我们如何在 C# 中为 Azure Data Lake 在 azure fileclient 中设置 setMetadata
- python-3.x - 如果找到特定字符串,则设置为变量
- algorithm - 是否重新排列 Floyd-Warshall 算法中的外循环,因为大多数内循环会改变算法
- amazon-web-services - AWS 未能为放大应用程序创建后端