语境
我们有一系列用于测试的开发数据库 - Azure SQL。这些数据库经常被删除并重新创建。我们想开始使用弹性池来更好地管理成本。我们正在使用 Entity Framework Core 以 Code First 策略创建和升级数据库。有可能不想将池用于一个或多个环境,因此这应该是可配置的,因此,迁移似乎不是一个可行的选择。
问题
因此,我在尝试使用 EF Core 在弹性池中配置实例时遇到了麻烦。根据此链接上的信息,我尝试了以下方法:
modelBuilder.HasPerformanceLevelSql($"ELASTIC_POOL (name = [{_elasticPoolName}])");
这是OnModelCreating(ModelBuilder modelBuilder)
在 DBContext 内部设置的。
现在,我预计底层的 T-SQL 是这样的:
CREATE DATABASE [DatabaseSomething] ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = ElasticPoolSomething ) ) ;
但是,启用记录器并查看实际生成的底层 T-SQL 后,我只看到:
CREATE DATABASE [DatabaseSomething];
就好像 EF 忽略了模型构建器上的 ELASTIC_POOL 设置。
附加信息
- 在我们的 Azure 中对实际弹性池进行了多次尝试失败后,我目前正在对一个本地 SQL 实例进行测试,该实例显然没有弹性池,但我假设生成的 T-SQL 仍会反映设置。还是我错了?
- 也试过:(
modelBuilder.HasPerformanceLevelSql($"ELASTIC_POOL (name = {_elasticPoolName})");
没有方括号) - 也试过:
modelBuilder.HasPerformanceLevelSql($"SERVICE_OBJECTIVE = ELASTIC_POOL (name = [{_elasticPoolName}])");
有没有人知道我可能会错过的东西?或者为什么会这样?
提前致谢!