EF 5 + Azure + MigrationFirst anula el nombre de la database. ¿Por qué?

Creé una database en Azure configurando mi propio nombre personalizado. Luego creé las primeras entidades del código EF 5 y agregué las migraciones. En el inicio de la aplicación llamé a estas dos líneas:

Database.DefaultConnectionFactory = new SqlConnectionFactory(connectionString); Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataContext, MyConfiguration>()); 

La cadena de connection se toma directamente de Azure: Server = tcp: xxx.database.windows.net, 1433; Database = dbName; User ID = yyy; Password = zzz; Trusted_Connection = False; Encrypt = True; Connection Timeout = 30;

En la primera llamada, esperaba que la database dbName se llenara con tablas según el esquema POCO. Pero en su lugar se genera una NUEVA database con el nombre completo del espacio de nombres de mi context: MyService.Business.Entity.MyContext

¿Por qué la migration no aceptará el nombre de la database especificado en la cadena de connection?

Puede especificar el nombre de la database o el nombre de la cadena de connection en el constructor de su DbContext:

 public class MyDataContext : DbContext { public MyDataContext: base("DbNameOrConntectionStringNameHere") { } } 

Mi experiencia es que, en el caso en que la cadena de connection se transmite en código, en lugar de getse de app.config, EF es peculiar acerca de cómo obtiene la cadena de connection.

Tuve que agregar una class henetworkingada de IDBContectFactory

  public class ContextFactory : IDbContextFactory<Context> { public Context Create() { var s = (string)AppDomain.CurrentDomain.GetData("ConnectionString"); var context = new Context(s); return context; } } 

Además, para crear una migration, necesitaba lo siguiente en mi class de context

 // uncomment when creating migration - comment out after migration is created public Context() : base("ConnectionStringName"){} 

Donde ConnectionStringName está configurado en mi app.config.

Todavía estoy desconcertado porque tuve que hacer esto y he preguntado al respecto aquí