SQL Serverを使用して移行するEntity Frameworkコアを使用しています。私はまた、統合テストでIn-MemoryとSQL-LiteのIn-Memoryデータベース接続を使用しています。SQL Serverを使用し、メモリがない場合のみ移行を実行する方法
SQL Server接続を使用している場合のみ、どのように移行を実行できますか?私はDbContext
に基づいてデータストアの種類を検出する方法を見ることができません。
SQL Serverを使用して移行するEntity Frameworkコアを使用しています。私はまた、統合テストでIn-MemoryとSQL-LiteのIn-Memoryデータベース接続を使用しています。SQL Serverを使用し、メモリがない場合のみ移行を実行する方法
SQL Server接続を使用している場合のみ、どのように移行を実行できますか?私はDbContext
に基づいてデータストアの種類を検出する方法を見ることができません。
EntityFrameworkコアを内蔵依存性注入を持っています。次のようにサービスとして取得することで、データベースプロバイダを確認できます。
if (dbContext.GetService<IDatabaseProviderServices>() is SqlServerDatabaseProviderServices)
{
await dbContext.Database.MigrateAsync();
}
あなたは、移行中Up
方法を実行するかどうかを判断するためにMigrationBuilder.ActiveProvider
プロパティを使用することができます。
protected override void Up(MigrationBuilder migrationBuilder)
{
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer")
{
CreateTable(....
}
}
をここではオプションだ...
if (db.GetService<IDatabaseProviderServices>()
.InvariantName == "Microsoft.EntityFrameworkCore.SqlServer")
{
db.Database.Migrate();
}
これはIn-MemoryとSQLiteでも同様です。 –