IdentityServer4 PersistedGrantDbContext& ConfigurationDbContext

时间:2017-08-08 17:43:05

标签: entity-framework dbcontext ef-migrations identityserver4

IdentityServer 4的新功能。我在文档中遵循了IdentityServer4 EntityFramework示例here

运行迁移脚本后

dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb
dotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb

它有效,现在我的应用程序有3个DB上下文。

  • ApplicationDbContext
  • PersistedGrantDbContext
  • ConfigurationDbContext

我的问题是两个DB上下文是什么?应用程序db上下文与其他两个上下文有什么区别?

如果我更新或添加任何型号,是否需要更新所有型号?或者我何时应该在ApplicationDbContext上运行迁移以及何时在另外两个上运行。

对此有任何见解或文献表示赞赏。 感谢。

1 个答案:

答案 0 :(得分:6)

想出来。这让我感到困惑的是这个。

有3个DB上下文,正如@Jasen所提到的,它是分割对实体或表的访问。

IdeneityServer4 + EntityFramework + ASP.NET Identity在数据库中创建以下表格:

SQL Server Tables

上下文用于引用以下内容:

ApplicationDbContext - 负责涉及ASP.NET身份的用户所以表

  • dbo.AspNetRoleClaims
  • dbo.AspNetRoles
  • dbo.AspNetUserClaims
  • dbo.AspNetUserLogins
  • dbo.AspNetUserRoles
  • dbo.AspNetUsers
  • dbo.AspNetUserTokens

PersistedGrantDbContext - 负责存储同意书,授权码,刷新令牌和参考令牌

  • dbo.PersistedGrants

ConfigurationDbContext - 负责数据库中剩余的所有其他内容

因此,对于迁移,如果我更新任何AspNet Identity模型(即ApplicationUser),那么我将在ApplicationDbContext上运行迁移。任何客户端表或其他范围都将在ConfigurationDbContext上运行。并且访问entites(或表)将是相应的上下文。