我看不到一种方法来检测基于
我使用实体框架核心使用SQL Server与迁移。我还在集成测试中使用in - memory和SQL-Lite in - memory数据库连接。
如何在使用SQL Server连接时才运行迁移?
DbContext
的数据存储类型。您可以使用MigrationBuilder.ActiveProvider
属性来决定是否在迁移中执行Up
方法:
protected override void Up(MigrationBuilder migrationBuilder)
{
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer")
{
CreateTable(....
}
}
https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/providers one-migration-set
EntityFramework Core内置了依赖注入。您可以通过将其作为服务获取来检查数据库提供程序,如下所示:
if (dbContext.GetService<IDatabaseProviderServices>() is SqlServerDatabaseProviderServices)
{
await dbContext.Database.MigrateAsync();
}
这里有一个选项…
if (db.GetService<IDatabaseProviderServices>()
.InvariantName == "Microsoft.EntityFrameworkCore.SqlServer")
{
db.Database.Migrate();
}