porta migrations microsoft first existing enable code entity-framework ef-code-first entity-framework-6 azure-sql-database code-first-migrations

entity framework - migrations - Cómo crear programáticamente la base de datos Sql Azure del tipo Basic/Standard edition a través del código Enity Framework primero



enable migrations command (1)

Uso EF 6. Mi código actual es:

public void CreateOrUpdateCompanyDb(string companyDbName) { try { string connectionString = _connectionStringProvider.GetConnectionString(companyDbName); DbMigrationsConfiguration cfg = CreateMigrationsConfig(connectionString); cfg.AutomaticMigrationsEnabled = false; cfg.AutomaticMigrationDataLossAllowed = false; DbMigrator dbMigrator = new DbMigrator(cfg); dbMigrator.Update(); } catch (MigrationsException exception) { _logger.Error(string.Format("Error creating company database ''{0}''",companyDbName), exception); } }

con cadena de conexión de la siguiente manera:

Server=tcp:xxx.database.windows.net,1433;Database=companyDbName;User ID=xxx@xxx;Password=xxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"

que crea la base de datos para la compañía particular. Pero el problema es que la base de datos creada proviene de la edición web ahora retirada, pero quiero crear una edición básica / estándar / premium.

¿Cómo debo manipular la cadena de conexión para que la edición de la base de datos sea la deseada?


La edición de Sql Azure Database es algo que puede especificar en el comando Create Database . AFAIK, no puedes especificarlo usando la cadena de conexión.

Sintaxis

CREATE DATABASE database_name [ COLLATE collation_name ] { (<edition_options> [, ...n]) } <edition_options> ::= { MAXSIZE = { 100 MB | 500 MB | 1 | 5 | 10 | 20 | 30 … 150…500 } GB | EDITION = { ''web'' | ''business'' | ''basic'' | ''standard'' | ''premium'' } | SERVICE_OBJECTIVE = { ''shared'' | ''basic'' | ''S0'' | ''S1'' | ''S2'' | ''P1'' | ''P2'' | ''P3'' } } [;]

Dado que, para su escenario, vienen a la mente dos opciones:

  1. Antes de usar DbMigrator , escriba explícitamente el código que crea la base de datos, si no existe utilizando ADO.Net tradicional.

  2. La otra opción que se me viene a la mente, pero no sé lo suficiente y puedes profundizar si quieres, es encontrar la forma de engancharte a EF, de modo que puedas personalizar el comando Create Database que debe generar.