2017-02-23 23 views
7

Tworzę projekt z rdzeniem framtu dotnetcore i encji. Używam bazy danych MySql i dodałem zależność do SapientGuardian.EntityFrameworkCore.MySql wersji 7.1.19.EntityFramework Baza danych Core.EnsureCreated nie tworzy bazy danych

Stworzyłem klasę SeedData gdzie zainicjować mojej bazy danych:

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

Wezwanie do materiału siewnego klasa:

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

    SeedData.Initialize(app.ApplicationServices); 
} 

i konfiguracji usługi:

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>>(); 
} 

kiedy zaczynam projekt otrzymuję wyjątek od połączenia EnsureCreate. Komunikat o wyjątku mówi: Authentication failed, ale jeśli ręcznie utworzę bazę danych (bez tabel), mój ciąg połączenia działa poprawnie, a EnsureCreated po prostu tworzy tabele dla moich jednostek.

Co jest nie tak? To jest problem z SapientGuardian.EntityFrameworkCore.MySql?

+0

erikscandola, rozwiązałeś to? –

+0

@JohnSmith, jeszcze nie – erikscandola

+0

@erikscandola Czy masz pustą bazę danych istnieje? – bravohex

Odpowiedz

2

Miałem ten sam problem, który opisałeś. Wygląda na to, że dostawca SapientGuardian może po prostu mieć niekompletną implementację w tej wersji.

Projekt readme file firmy SapientGuardian sugeruje korzystanie z aktywniej obsługiwanego dostawcy, takiego jak Pomelo.EntityFrameworkCore.MySql. Więc zamieniłem swój projekt na Pomelo. Teraz wywołanie metody MakeCreated tworzy bazę danych zgodnie z oczekiwaniami i nie zawiera wyjątku dotyczącego nieudanego uwierzytelniania.