public static void ConfigureResourcesContext(this ModelBuilder modelBuilder) { var storeOptions = new ConfigurationStoreOptions(); modelBuilder.Entity <IdentityResource>(identityResource => { identityResource.ToTable(storeOptions.IdentityResource).HasKey(x => x.Id); identityResource.Property(x => x.Name).HasMaxLength(200).IsRequired(); identityResource.Property(x => x.DisplayName).HasMaxLength(200); identityResource.Property(x => x.Description).HasMaxLength(1000); identityResource.HasIndex(x => x.Name).IsUnique(); identityResource.HasMany(x => x.UserClaims).WithOne(x => x.IdentityResource).HasForeignKey(x => x.IdentityResourceId).IsRequired().OnDelete(DeleteBehavior.Cascade); identityResource.HasMany(x => x.Properties).WithOne(x => x.IdentityResource).HasForeignKey(x => x.IdentityResourceId).IsRequired().OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity <IdentityResourceClaim>(claim => { claim.ToTable(storeOptions.IdentityResourceClaim).HasKey(x => x.Id); claim.Property(x => x.Type).HasMaxLength(200).IsRequired(); }); modelBuilder.Entity <IdentityResourceProperty>(property => { property.ToTable(storeOptions.IdentityResourceProperty); property.Property(x => x.Key).HasMaxLength(250).IsRequired(); property.Property(x => x.Value).HasMaxLength(2000).IsRequired(); }); modelBuilder.Entity <ApiResource>(apiResource => { apiResource.ToTable(storeOptions.ApiResource).HasKey(x => x.Id); apiResource.Property(x => x.Name).HasMaxLength(200).IsRequired(); apiResource.Property(x => x.DisplayName).HasMaxLength(200); apiResource.Property(x => x.Description).HasMaxLength(1000); apiResource.Property(x => x.AllowedAccessTokenSigningAlgorithms).HasMaxLength(100); apiResource.HasIndex(x => x.Name).IsUnique(); apiResource.HasMany(x => x.Secrets).WithOne(x => x.ApiResource).HasForeignKey(x => x.ApiResourceId).IsRequired().OnDelete(DeleteBehavior.Cascade); apiResource.HasMany(x => x.Scopes).WithOne(x => x.ApiResource).HasForeignKey(x => x.ApiResourceId).IsRequired().OnDelete(DeleteBehavior.Cascade); apiResource.HasMany(x => x.UserClaims).WithOne(x => x.ApiResource).HasForeignKey(x => x.ApiResourceId).IsRequired().OnDelete(DeleteBehavior.Cascade); apiResource.HasMany(x => x.Properties).WithOne(x => x.ApiResource).HasForeignKey(x => x.ApiResourceId).IsRequired().OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity <ApiResourceSecret>(apiSecret => { apiSecret.ToTable(storeOptions.ApiResourceSecret).HasKey(x => x.Id); apiSecret.Property(x => x.Description).HasMaxLength(1000); apiSecret.Property(x => x.Value).HasMaxLength(4000).IsRequired(); apiSecret.Property(x => x.Type).HasMaxLength(250).IsRequired(); }); modelBuilder.Entity <ApiResourceClaim>(apiClaim => { apiClaim.ToTable(storeOptions.ApiResourceClaim).HasKey(x => x.Id); apiClaim.Property(x => x.Type).HasMaxLength(200).IsRequired(); }); modelBuilder.Entity <ApiResourceScope>((System.Action <EntityTypeBuilder <ApiResourceScope> >)(apiScope => { apiScope.ToTable((TableConfiguration)storeOptions.ApiResourceScope).HasKey(x => x.Id); apiScope.Property(x => x.Scope).HasMaxLength(200).IsRequired(); })); modelBuilder.Entity <ApiResourceProperty>(property => { property.ToTable(storeOptions.ApiResourceProperty); property.Property(x => x.Key).HasMaxLength(250).IsRequired(); property.Property(x => x.Value).HasMaxLength(2000).IsRequired(); }); modelBuilder.Entity <ApiScope>(scope => { scope.ToTable(storeOptions.ApiScope).HasKey(x => x.Id); scope.Property(x => x.Name).HasMaxLength(200).IsRequired(); scope.Property(x => x.DisplayName).HasMaxLength(200); scope.Property(x => x.Description).HasMaxLength(1000); scope.HasIndex(x => x.Name).IsUnique(); scope.HasMany(x => x.UserClaims).WithOne(x => x.Scope).HasForeignKey(x => x.ScopeId).IsRequired().OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity <ApiScopeClaim>(scopeClaim => { scopeClaim.ToTable(storeOptions.ApiScopeClaim).HasKey(x => x.Id); scopeClaim.Property(x => x.Type).HasMaxLength(200).IsRequired(); }); modelBuilder.Entity <ApiScopeProperty>(property => { property.ToTable(storeOptions.ApiScopeProperty).HasKey(x => x.Id); property.Property(x => x.Key).HasMaxLength(250).IsRequired(); property.Property(x => x.Value).HasMaxLength(2000).IsRequired(); }); }
public static void ConfigureClientContext(this ModelBuilder modelBuilder) { var storeOptions = new ConfigurationStoreOptions(); modelBuilder.Entity <Client>(client => { client.ToTable(storeOptions.Client); client.HasKey(x => x.Id); client.Property(x => x.ClientId).HasMaxLength(200).IsRequired(); client.Property(x => x.ProtocolType).HasMaxLength(200).IsRequired(); client.Property(x => x.ClientName).HasMaxLength(200); client.Property(x => x.ClientUri).HasMaxLength(2000); client.Property(x => x.LogoUri).HasMaxLength(2000); client.Property(x => x.Description).HasMaxLength(1000); client.Property(x => x.FrontChannelLogoutUri).HasMaxLength(2000); client.Property(x => x.BackChannelLogoutUri).HasMaxLength(2000); client.Property(x => x.ClientClaimsPrefix).HasMaxLength(200); client.Property(x => x.PairWiseSubjectSalt).HasMaxLength(200); client.Property(x => x.UserCodeType).HasMaxLength(100); client.Property(x => x.AllowedIdentityTokenSigningAlgorithms).HasMaxLength(100); client.HasIndex(x => x.ClientId).IsUnique(); client.HasMany(x => x.AllowedGrantTypes).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.RedirectUris).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.PostLogoutRedirectUris).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.AllowedScopes).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.ClientSecrets).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.Claims).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.IdentityProviderRestrictions).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.AllowedCorsOrigins).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); client.HasMany(x => x.Properties).WithOne(x => x.Client).HasForeignKey(x => x.ClientId).IsRequired().OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity <ClientGrantType>(grantType => { grantType.ToTable(storeOptions.ClientGrantType); grantType.Property(x => x.GrantType).HasMaxLength(250).IsRequired(); }); modelBuilder.Entity <ClientRedirectUri>(redirectUri => { redirectUri.ToTable(storeOptions.ClientRedirectUri); redirectUri.Property(x => x.RedirectUri).HasMaxLength(2000).IsRequired(); }); modelBuilder.Entity <ClientPostLogoutRedirectUri>(postLogoutRedirectUri => { postLogoutRedirectUri.ToTable(storeOptions.ClientPostLogoutRedirectUri); postLogoutRedirectUri.Property(x => x.PostLogoutRedirectUri).HasMaxLength(2000).IsRequired(); }); modelBuilder.Entity <ClientScope>(scope => { scope.ToTable(storeOptions.ClientScopes); scope.Property(x => x.Scope).HasMaxLength(200).IsRequired(); }); modelBuilder.Entity <ClientSecret>(secret => { secret.ToTable(storeOptions.ClientSecret); secret.Property(x => x.Value).HasMaxLength(4000).IsRequired(); secret.Property(x => x.Type).HasMaxLength(250).IsRequired(); secret.Property(x => x.Description).HasMaxLength(2000); }); modelBuilder.Entity <ClientClaim>(claim => { claim.ToTable(storeOptions.ClientClaim); claim.Property(x => x.Type).HasMaxLength(250).IsRequired(); claim.Property(x => x.Value).HasMaxLength(250).IsRequired(); }); modelBuilder.Entity <ClientIdPRestriction>(idPRestriction => { idPRestriction.ToTable(storeOptions.ClientIdPRestriction); idPRestriction.Property(x => x.Provider).HasMaxLength(200).IsRequired(); }); modelBuilder.Entity <ClientCorsOrigin>(corsOrigin => { corsOrigin.ToTable(storeOptions.ClientCorsOrigin); corsOrigin.Property(x => x.Origin).HasMaxLength(150).IsRequired(); }); modelBuilder.Entity <ClientProperty>(property => { property.ToTable(storeOptions.ClientProperty); property.Property(x => x.Key).HasMaxLength(250).IsRequired(); property.Property(x => x.Value).HasMaxLength(2000).IsRequired(); }); }