Невозможно создать объект типа AuthDbContext при запуске Add-Migration - PullRequest
0 голосов
/ 26 мая 2020

С ASP. NET Core 3.1,

Я пытаюсь использовать настройку для IdentityUser следующим образом:

public class ContactUser : IdentityUser
{
    public string Name { get; set; }
}

С моим DbContext

public class AuthDbContext : IdentityDbContext<ContactUser>
{
    public AuthDbContext(DbContextOptions<AuthDbContext> options)
        : base(options)
    { }
}

Зарегистрировано следующим образом в методе Startup.ConfigureServices(IServiceCollection services):

services.AddDbContext<AuthDbContext>(options =>
    options.UseNpgsql(Configuration.GetConnectionString("AuthDatabase")));

services.AddIdentity<ContactUser, IdentityRole>()
    .AddEntityFrameworkStores<AuthDbContext>();

С моим Program.cs таким (public class Program):

public static void Main(string[] args)
{
    var host = CreateHostBuilder(args).Build();
    host.Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Однако когда Я запускаю команду Add-Migration AddContactUser -StartupProject MyWebApi в консоли диспетчера пакетов и получаю следующую ошибку:

Невозможно создать объект типа AuthDbContext. Для различных шаблонов, поддерживаемых во время разработки, см. https://go.microsoft.com/fwlink/?linkid=851728

На основе информации по этой ссылке инструмент должен найти мой метод Program.CreateHostBuilder, но не .

Почему?

Начальный проект - это проект docker -compose с использованием PostgreSQL. Я подчеркиваю тот факт, что все раньше хорошо работало со встроенным классом IdentityUser, но я хотел его настроить, поэтому я создал ContactUser.

Если я создам конструктор без параметров для AuthDbContext и переопределю OnConfiguring с записью строки подключения, он работает нормально, но я не хочу выбирать этот вариант. Я также могу создать реализацию IDesignTimeDbContextFactory<T>, и я думаю, это тоже поможет, но я хочу понять, что простое решение по умолчанию не работает и не может найти конфигурацию, которая хорошо работает во время выполнения.

Изменить: я обнаружил, что это случай с другим контекстом DbContext, который не имеет ничего общего с ASP. NET Core Identity. Это должно помочь в решении проблемы.

...