有没有办法为 Azure SQL 服务器设置默认的 Azure SQL 数据库定价层

Is there a way to set the default Azure SQL Database pricing tier for an Azure SQL Server

当使用 Entity Framework 6 的数据库初始化器创建数据库时 none 与 Azure SQL 服务器连接,创建的数据库是使用 vCore 定价模型创建的。

理想情况下,它只需要是一个 S0 DTU 实例,我需要找到一种方法来指定它。

是否可以指定 Azure SQL 服务器上的默认数据库类型?或者可以在连接字符串中添加一些魔法来通知它要创建的数据库实例的类型吗?

图片来源:Torsten Grabs (MSFT) @ MSDN

https://social.msdn.microsoft.com/Forums/windows/en-US/7d7b5cd8-5878-4241-a674-33336010f081/set-service-tiers-when-create-azure-sql-database-from-vs-c-entity-framework?forum=ssdsgetstarted

不幸的是,EF 在创建新数据库时依赖于默认参数,而 Azure SQL DB 中目前默认是创建 Web 版数据库。您可以选择通过为 EF 创建自己的数据库初始化程序来覆盖默认行为。该初始化程序发出 CREATE DATABASE 语句 - 请参阅以下示例,您可以轻松地将其插入 BloggingContext 教程示例代码以进行测试 - 或者只需将 BloggingContext 替换为您的 DbContext。

    public class BloggingContextCustomInitializer : IDatabaseInitializer<BloggingContext>
    {
        public void InitializeDatabase(BloggingContext context)
        {
            if (!context.Database.Exists())
            {
                SqlConnectionStringBuilder connstrBldr = new SqlConnectionStringBuilder(context.Database.Connection.ConnectionString);
                connstrBldr.InitialCatalog = "master";

                using (SqlConnection conn = new SqlConnection(connstrBldr.ConnectionString))
                {
                    conn.Open();
                    SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "CREATE DATABASE [" + context.Database.Connection.Database + "] (EDITION = 'standard')";
                    cmd.ExecuteNonQuery();
                }

                Database.SetInitializer(new CreateDatabaseIfNotExists<BloggingContext>());
                context.Database.Initialize(force: true);
            }
        }
    }

除此之外,请参阅 https://www.sqlshack.com/overview-of-create-database-statement-in-azure-sql-server/

CREATE DATABASE DemoDB</p>
( EDITION = 'standard', SERVICE_OBJECTIVE = 'S0', MAXSIZE = 500 MB ) ;