Как правильно зарегистрировать пользовательский IdentityServer ConfigurationDbContext в Asp.Net Core 2? - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать свой собственный ConfigurationDbContext из IdentityServer.

public class IdSrvConfigurationDbContext : ConfigurationDbContext<ConfigurationDbContext>
{
    public IdSrvConfigurationDbContext(DbContextOptions<IdSrvConfigurationDbContext> options, ConfigurationStoreOptions storeOptions) : base(options.ChangeOptionsType<ConfigurationDbContext>(), storeOptions)
    {

    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //mylogic here  
        base.OnModelCreating(modelBuilder);
    }
}

Теперь в Startup.cs я попробовал следующее

    services.AddIdentityServer()
            .AddDeveloperSigningCredential()
            .AddConfigurationStore(options =>
            {
                // (DbContextOptionsBuilder) paramBuilder
                options.ConfigureDbContext = paramBuilder =>
                    paramBuilder.UseSqlServer(connectionString,
                        sql => sql.MigrationsAssembly(migrationAssembly));
            });

Теперь, когда я пытаюсь запустить миграциинад моим проектом он проходит все инъекции логики запуска и заканчивается этой ошибкой:

enter image description here

1 Ответ

0 голосов
/ 24 мая 2018

Вам нужно установить тип IdSrvConfigurationDbContext, чтобы вместо него ожидать DbContextOptions<ConfigurationDbContext>.Это тип, который ожидает базовый ConfigurationDbContext, и это также то, что IdentityServer собирается передать.

Обычно, вы всегда должны использовать типизированный DbContextOptions<T>, соответствующий контексту.Но при наследовании от существующих контекстов это может быть немного сложным.Но в этих случаях вам не нужно сильно беспокоиться: набранные параметры используются только для различения различных настроенных параметров.Поэтому, пока каждый контекст в вашем приложении все еще использует отдельный тип, проблем не должно быть.

...