2012-08-25 42 views
7

Estoy en VS 2012 RTM, con EF 5. Estoy haciendo Code First, pero trato de ignorar las migraciones de código ya que recién estoy en desarrollo. Para evitarlos, tengo este conjuntoCómo trabajar con LocalDB y EF, sin usar migraciones

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>()); 

De vez en cuando, incluso cuando no creo que he tocado el modelo, se decide recrear. Esta bien. Pero generalmente da como resultado el error

No se puede eliminar la base de datos porque está actualmente en uso.

Así que decidí eliminar la base de datos por completo. Voy a VS, voy al "Explorador de objetos de SQL Server", encuentro el DB y lo elimino. Ahora estoy atascado en

No se puede adjuntar el archivo '{0}' como base de datos '{1}'

me había ocurrido esto anoche y yo sólo jugueteaba alrededor hasta que funcione (cerrada realizar tareas, reiniciar VS, cambiar la base de datos y los nombres de archivo en web.config, etc.

Pregunta 1) ¿Cómo salgo de este estado?

Pero la pregunta más importante, ¿cómo evito que llegue a este estado?

+0

¿Por qué no utilizar migraciones automáticas? Puede cambiar el método de inicialización de DB en cualquier momento, incluso desde la configuración cuando despliega en producción. –

+0

[Este] (http://msdn.microsoft.com/en-us/data/jj554735) enumera algunas razones por las que no quiero utilizar Migraciones automáticas. Además, solo lo lleva hasta el punto de que necesita comenzar a usar Migraciones basadas en código de todos modos. –

+0

Estoy enfrentando el mismo problema ¿Encontraste una solución? – Shimmy

Respuesta

5

Tuve el mismo problema y logré solucionarlo. El principal problema es que EF no creará automáticamente la base de datos. La solución no es muy difícil.

Primero, vaya al Explorador de soluciones y cree manualmente la base de datos. Para hacerlo, vaya a la carpeta donde se encuentra su base de datos (generalmente App_Data). Haga clic derecho en esta carpeta y haga clic en Agregar -> Nuevo elemento. Seleccione la ficha Datos y seleccione Base de datos del servidor SQL. Asegúrese de ingresar el nombre que Entity Framework espera (que se especifica en el mensaje de error Cannot attach the file '{0}' as database '{1}').

Entonces es muy probable que aparezca un mensaje de error que diga que la base de datos no contiene ningún metadato del modelo. Para evitar esto, cambie su base de datos para la inicialización:

Database.SetInitializer(new DropCreateDatabaseAlways<SomeContext>()); 

Ahora ejecutar la aplicación y la base de datos debe estar allí con tablas creadas correctamente. Una vez que este paso se ha ejecutado con éxito, cambia cambiar su inicializador de la base de datos de nuevo a:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SomeContext>()); 
+2

Gracias por la información, fue útil. – Form

+1

¡Realmente útil! –

6

El Explorador de objetos de servidor SQL ventana puede mantener una conexión con la base de datos. Al cerrar la ventana y todas las ventanas abiertas se libera la conexión.

Cuestiones relacionadas