0

SQL Serverを使用して移行するEntity Frameworkコアを使用しています。私はまた、統合テストでIn-MemoryとSQL-LiteのIn-Memoryデータベース接続を使用しています。SQL Serverを使用し、メモリがない場合のみ移行を実行する方法

SQL Server接続を使用している場合のみ、どのように移行を実行できますか?私はDbContextに基づいてデータストアの種類を検出する方法を見ることができません。

答えて

0

EntityFrameworkコアを内蔵依存性注入を持っています。次のようにサービスとして取得することで、データベースプロバイダを確認できます。

if (dbContext.GetService<IDatabaseProviderServices>() is SqlServerDatabaseProviderServices) 
{ 
    await dbContext.Database.MigrateAsync(); 
} 
1

あなたは、移行中Up方法を実行するかどうかを判断するためにMigrationBuilder.ActiveProviderプロパティを使用することができます。

protected override void Up(MigrationBuilder migrationBuilder) 
{ 
    if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer") 
    { 
     CreateTable(.... 
    } 
} 
1

をここではオプションだ...

if (db.GetService<IDatabaseProviderServices>() 
    .InvariantName == "Microsoft.EntityFrameworkCore.SqlServer") 
{ 
    db.Database.Migrate(); 
} 
+0

これはIn-MemoryとSQLiteでも同様です。 –

関連する問題