代码之家  ›  专栏  ›  技术社区  ›  Rafael León

首先使用实体框架代码在Azure中创建basic edition数据库

  •  2
  • Rafael León  · 技术社区  · 8 年前

    我正在尝试首先使用EF代码在Azure订阅中创建基本版本数据库,但我找不到设置版本的方法。始终在标准版中创建数据库。 我正在使用 DbContext.Database.CreateIfNotExists () 方法

    1 回复  |  直到 8 年前
        1
  •  1
  •   Alberto Morillo    8 年前

    不幸的是,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);
            }
        }
    }
    
    推荐文章