2017-02-23 14 views
7

私はdotnetcoreとエンティティフレームワークコアでプロジェクトを作成します。私はMySQLデータベースを使用して、SapientGuardian.EntityFrameworkCore.MySqlバージョン7.1.19に依存関係を追加しました。EntityFrameworkコアDatabase.EnsureCreatedはデータベースを作成しません

私は自分のデータベースを初期化SeedDataクラスを作成しました:私は起動すると

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

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

とサービスの構成をプロジェクト私はEnsureCreateの呼び出しで例外を取得します。例外メッセージはAuthentication failedと言いますが、手動でデータベース(テーブルなし)を作成した場合、接続文字列は正常に動作し、EnsureCreatedは単に自分のエンティティのテーブルを作成します。

どういうところが間違っていますか? SapientGuardian.EntityFrameworkCore.MySqlの問題ですか?

+0

erikscandola、あなたはそれを解決しましたか? –

+0

@JohnSmith、まだ – erikscandola

+0

@erikscandola空のデータベースがありますか? – bravohex

答えて

2

私は同じ問題を説明しました。 SapientGuardianプロバイダがこのバージョンでは不完全な実装を単に持っているようです。

SapientGuardianプロジェクトのreadme fileは、実際には、Pomelo.EntityFrameworkCore.MySqlなどのより積極的に維持されているプロバイダを使用することを提案しています。そこでプロジェクトをPomeloに切り替えました。今度はEnsureCreatedを呼び出すと、データベースが正常に作成され、認証に失敗した場合の例外はありません。

関連する問題