2012-07-03 33 views
6

Estoy utilizando Entity Framework 5.0 RC con la base de datos LocalDB que viene preconfigurada con VS 2012 RC para algunos prototipos y pruebas de base de datos de código primero.Restablecer base de datos de código EF en LocalDB

Después de algunos ciclos de cambiar mi base de datos con código inicial y ejecutar "actualización de la base de datos", hice un gran cambio y la migración automática falló. No me importa resolver este conflicto ya que esto es solo un prototipo, por lo que perder datos está bien.

¿Cómo restablezco o elimino la base de datos? Restablecer también debe restablecer la tabla de migración, que parece estar oculta desde Server Explorer en Visual Studio.

+0

Encontré algunos artículos sobre cómo hacer que la tabla __MigrationHistory sea una tabla que no sea del sistema, lo que a su vez me permitió eliminar todas las tablas y el historial de migración desde Server Explorer. Aún así, no es una forma muy rápida de reiniciar, así que estoy abierto a ideas aquí. Otro punto que encontré fue NO usar AutomaticMigration, que tenía.Cuando está habilitado, es difícil deshacerse de un error de migración, porque no hay código para ver qué está sucediendo. – angularsen

+2

Puede volver a crear la base de datos configurando el inicializador 'Database.SetInitializer (new AlwaysRecreateDatabase ());' – mfussenegger

+0

Gracias, sí, estaba al tanto de eso y creo que tuve éxito ejecutando ese código en una aplicación de consola solo para borrar todo . Todavía está buscando algo que sea más fácil para todos en el equipo cuando la base de datos deba reiniciarse, como un script SQL para ejecutar. – angularsen

Respuesta

8

gota toda la base de datos en Visual Studio

  1. Explorador de objetos Abra SQL Server
  2. Encuentra la base de datos que está trabajando con un clic derecho y seleccione Eliminar
  3. seleccionar las dos casillas de verificación (Eliminar copia de seguridad y restauración historia, y las conexiones existentes cerca) y haga clic en Aceptar
  4. Ejecutar el programa de nuevo y se deben volver a crear el dabase
+0

Ha pasado un tiempo desde esta pregunta, pero sí, este es el enfoque que uso actualmente también para reiniciar la base de datos. En una nota lateral, no estoy seguro de cuándo esto cambió, pero en mis proyectos recientes la tabla de historial de migración aparentemente ya no es una tabla de sistema. – angularsen

1

Hasta ahora, este es el mejor enfoque que he encontrado.

  1. Haga de __MigrationHistory una tabla que no sea del sistema.
  2. Ejecute el script SQL para eliminar todas las tablas.

Para modificar la tabla __MigrationHistory, consulte this article para manejar las bases de datos existentes y las nuevas creadas con código primero.

La secuencia de comandos SQL es el siguiente:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"; 

estoy usando Database .NET v4 Free para ejecutar esta secuencia de comandos SQL, porque mi Visual Studio 11 copia RC no me permite ejecutar consultas en LocalDB por alguna razón. Además, necesito ejecutar el script dos veces para que se eliminen todas las tablas debido a algunas claves externas. No me molesté en arreglar esto, ya que parece funcionar bastante bien.

0

que enfrentan a los mismos problemas, pero he encontrado una manera de ver la tabla __MigrationHistory del istance LocalDB, en lugar de utilizar el Explorador de servidores que debe tratar el Explorador de objetos de servidor SQL, se encuentra la mesa en el System Tablas de la base de datos creada.

Usted cannon directamente la salida de datos utilizando el datos de vista comando en la tabla, pero puede consultarlo sin ningún problema.

select * from __MigrationHistory 

Así que puedes soltarlo como el artículo que informaste dijo para las migraciones existentes.

Cuestiones relacionadas