Estoy usando EF Code First con EF 5 en VS 2012. Utilizo el update-database
comando PM y tengo un método de inicialización simple para llenar algunas tablas con datos de muestra.
Me gustaría eliminar y volver a crear mi x.mdb. El historial de actualizaciones parece no estar sincronizado. Si comento todos mis DBSets en mi contexto, se update-database
ejecuta sin error pero deja algunas tablas en la base de datos. Como no tengo datos valiosos en la base de datos, parece más simple restablecer todo.
¿Cómo puedo lograr esto?
fuente
Si trabajó de la manera correcta para crear sus migraciones usando el comando
Add-Migration "Name_Of_Migration"
, puede hacer lo siguiente para obtener un comienzo limpio (reiniciar, con pérdida de datos, por supuesto ):Update-database -TargetMigration:0
Normalmente, su base de datos está vacía ahora desde que se ejecutaron los métodos hacia abajo.
Update-database
Esto recreará su base de datos a su migración actual
fuente
Revestimiento único para colocar, crear y sembrar desde la consola del administrador de paquetes:
update-database -TargetMigration:0 | update-database -force
Kaboom.
fuente
Update-Database 0
. Independientemente, esto no encaja bien en el caso del OP en el que "El historial de actualizaciones parece no estar sincronizado" ; este enfoque funciona ejecutando la migración "Down" para cada migración aplicada hasta ahora a la base de datos, por lo que si ha eliminado una migración que se aplicó anteriormente, esta fallará (y de manera similar puede fallar si ha modificado una migración después aplicándolo). La respuesta aceptada es más sólida. -1 por eso, y la repetición inexplicable deupdate-database -force
.Para EntityFrameworkCore puede utilizar lo siguiente:
Update-Database -Migration 0
Esto eliminará todas las migraciones de la base de datos. Entonces puedes usar:
Para eliminar su migración. Finalmente, puede recrear su migración y aplicarla a la base de datos.
Add-Migration Initialize Update-Database
Probado en EFCore v2.1.0
fuente
Qué tal si ..
static void Main(string[] args) { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>()); // C // o // d // i // n // g }
Recogí esto de Programming Entity Framework: Code First , Pg 28 First Edition.
fuente
Si creó su base de datos siguiendo este tutorial: https://msdn.microsoft.com/en-au/data/jj193542.aspx
... entonces esto podría funcionar:
.mdf
y.ldf
en el directorio de su proyectofuente
Siga estos pasos:
Dbset<Item> Items{get;set;}
y en Nuget Console ejecute estos comandosSe eliminarán las tablas que no existen en el contexto, pero que ya se crearon en la base de datos.
fuente
dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();
fuente
Permítame ayudarlo a actualizar las respuestas aquí, ya que los nuevos usuarios lo encontrarán útil. Creo que el objetivo es eliminar la base de datos y volver a crearla utilizando el enfoque EF Code First. 1. Abra su proyecto en Visual Studio usando la extensión ".sln". 2.Seleccione Explorador de servidores (a menudo se encuentra a la izquierda) 3.Seleccione Explorador de objetos de SQL Server. 4. La base de datos que desea eliminar aparecerá en cualquiera de los localDB. Haz clic derecho y selecciona eliminar.
fuente
update-database
, y dado que menciona la siembra, supongo que estaban buscando una solución automatizada para realizar pruebas. Por lo tanto, su solución de interfaz de usuario probablemente no sea lo que están buscando.Hay muchas formas de eliminar una base de datos o actualizar una base de datos existente, simplemente puede cambiar a migraciones anteriores.
dotnet ef database update previousMigraionName
Pero algunas bases de datos tienen limitaciones como no permitir modificar después de crear relaciones, lo que significa que no ha permitido privilegios para eliminar columnas de los proveedores de bases de datos ef core, pero la mayor parte del tiempo en ef core drop database está permitido. De modo que puede eliminar DB usando el comando drop y luego vuelve a utilizar la migración anterior.
dotnet ef database drop PMC command PM> drop-database
O puede eliminar manualmente la base de datos y realizar una migración.
fuente
Dado que algún día los nuevos usuarios de EF Core harán clic en esta pregunta y encuentro que las respuestas principales son algo innecesariamente destructivas, le mostraré una manera de comenzar "de nuevo". Cuidado, esto borra todos sus datos.
dotnet ef database update
fuente