2017-02-23 5 views
7

Я создаю проект с ядром инфраструктуры dotnetcore и entity. Я использую базу данных MySql, и я добавил зависимость от SapientGuardian.EntityFrameworkCore.MySql версии 7.1.19.База данных EntityFramework Core.EnsureCreated не создает базу данных

Я создал SeedData класс, где инициализирует свою базу данных:

public class SeedData 
{ 
    public static void Initialize(IServiceProvider serviceProvider) 
    { 
     using (MyDbContext context = new MyDbContext(serviceProvider.GetRequiredService<DbContextOptions<MyDbContext>>())) { 
      context.Database.EnsureCreated(); 
     } 
    } 
} 

Призыв к семени класса:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    // Other code 

    SeedData.Initialize(app.ApplicationServices); 
} 

и конфигурация службы:

public void ConfigureServices(IServiceCollection services) 
{ 
    // Other code 

    // Add database 
    services.AddDbContext<MyDbContext>(options => { 
      options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")); 
    }); 

    services.AddScoped<Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptions, Microsoft.EntityFrameworkCore.DbContextOptions<MyDbContext>>(); 
} 

Когда я начинаю в проекте я получаю исключение по вызову EnsureCreate. Сообщение об исключении говорит Authentication failed, но если я вручную создаю базу данных (без таблиц), моя строка подключения отлично работает и EnsureCreated просто создает таблицы для моих объектов.

Что случилось? Это проблема с SapientGuardian.EntityFrameworkCore.MySql?

+0

erikscandola, вы решили это? –

+0

@JohnSmith, еще нет – erikscandola

+0

@erikscandola У вас есть пустая база данных существует? – bravohex

ответ

2

У меня была та же проблема, которую вы описали. Похоже, что поставщик SapientGuardian может просто иметь неполную реализацию в этой версии.

Проект SapientGuardian readme file на самом деле предлагает использовать более активно поддерживаемый провайдер, такой как Pomelo.EntityFrameworkCore.MySql. Поэтому я переключил свой проект на Помело. Теперь вызов EnsureCreated создает базу данных, как ожидалось, и не имеет исключения с ошибкой аутентификации.

Смежные вопросы