如何控制迁移中上下文的名称?

How to control the name of the context in a migration?

我跟随 a blog 来到了我应该为我的应用程序的身份模型创建迁移的地方。它向 运行 明确说明以下两个命令。

dotnet ef migrations add InitialIdentityServerMigration -c PersistedGrantDbContext
dotnet ef migrations add InitialIdentityServerMigration -c ConfigurationDbContext

我很自然地喜欢对事物进行自我调整,因此我不得不将迁移和上下文称为我编造的东西。虽然迁移的名称是任意的,但我发现上下文的名称不是。这让我很吃惊。

显然,使用 PersistedGrantDbContext 的派生(例如 PersistedGrants)会产生以下错误。

No DbContext named 'PersistedGrants' was found.

我很好奇这个名字在哪里被硬编码,并在解决方案中到处寻找。但是,在任何地方都找不到该字符串的踪迹,我对它的来源感到困惑。实际上,我不需要更改它。但是我还是想知道如果我愿意的话。

我看到在 the official docs 中提到了 IDS4。但是,令我感到困惑的是,我无法在任何地方找到它反映在我的解决方案中。

我在哪里可以找到那个字符串,我错过了什么?

创建迁移时,您需要指定 DbContext 的名称,以便将当前模型与其最新快照进行比较,并将差异反映在迁移中。

No DbContext named 'PersistedGrants' was found.

该字符串不在 IDS4 库中。 It's logged by EF and defined here

IdentityServer 将存储分为两部分:配置 (ConfigurationDbContext) 和操作数据 (PersistentGrantDbContext)。 您可以在 IdentityServer.EntityFramework.Storage 程序集中找到它们。

至于文档,介绍页面有很好的记录,但除此之外没有太多内容。源代码注释得很好,是一个更好的信息来源。

更多信息