1

身份識別服務器的新手4.我遵循文檔上的IdentityServer4 EntityFramework示例hereIdentityServer4 PersistedGrantDbContext&ConfigurationDbContext

遷移腳本運行

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上下文的?應用程序數據庫上下文和其他兩個區別有什麼區別?

如果我更新或添加任何模型,是否需要更新所有三個?或者何時應該在ApplicationDbContext上運行遷移,以及何時在另外兩個上運行遷移。

任何有關這些的見解或文學表示讚賞。 謝謝。

+0

這個想法是分割實體,所以你只消耗你需要的表,所以應用程序不需要一次性加載所有的表現,也可以限制訪問。 https://stackoverflow.com/questions/11197754/entity-framework-one-database-multiple-dbcontexts-is-this-a-bad-idea – Jasen

+0

@Jasen有道理,謝謝。有關IdentityServer4中如何使用PersistedGrantDbContext和PersistedGrantDbContext的任何見解? –

+0

我不熟悉IdentityServer的詳細信息。我認爲他們將贈款與應用商店中的服務器配置分開存儲。 – Jasen

回答

3

想通了。留下這個讓任何人都像我一樣對此感到困惑。

有3個數據庫上下文,正如@Jasen提到的那樣,它是將對實體或表的訪問分開。

IdeneityServer4 +的EntityFramework + ASP.NET身份在數據庫中創建下表:

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身份識別模型(即ApplicationUser),然後我將在ApplicationDbContext上運行遷移。任何客戶端表或其他範圍將在ConfigurationDbContext上運行。訪問entites(或表)將是相應的上下文。