使用Entity Framework Code First在Azure中创建基本版数据库

时间:2018-03-26 16:57:39

标签: entity-framework azure ef-code-first azure-sql-database

我正在尝试使用EF-Code First在Azure suscription中创建基本版数据库,但我找不到设置版本的方法。始终以标准版创建数据库。 我正在使用DbContext.Database.CreateIfNotExists ()方法。

1 个答案:

答案 0 :(得分:1)

不幸的是,EF在创建新数据库时依赖于默认参数。您可以通过为EF创建自己的数据库初始化程序来选择覆盖默认行为。

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 = 'Basic')";
                cmd.ExecuteNonQuery();
            }

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