Para fines de prueba, me gustaría poder eliminar manualmente y volver a crear una base de datos utilizando EF CodeFirst CTP5. ¿Cómo haría esto?EF CodeFirst CTP5 - ¿Soltar manualmente y crear DB?
Respuesta
El clase DbDatabase disponible como una característica en su DbContext objeto ofrece un conjunto de métodos para trabajar directamente con la base de datos. Se puede utilizar el Crear y Eliminar método para este asunto:
using (var context = new YourContext())
{
context.Database.Delete();
context.Database.Create();
// Or
context.Database.CreateIfNotExists();
}
Y no olvide cerrar cualquier conexión a su base de datos (desde Visual Studio o similar) de lo contrario recibirá una excepción diciendo que la base de datos está en uso ... –
Llamando a Database.Connection.Close() antes de Database.Delete() no ayuda. Aún recibe el mensaje de que la base de datos está en uso. – Greg
Greg, eso es porque la base de datos realmente está en uso. Es posible que lo tenga abierto en Server Explorer; intente cerrar esa conexión primero. – mjohnsonengr
Comprendo que esto es viejo, pero no pude conseguir la solución aceptado trabajar tan Rodé una solución rápida ...
using System;
using System.Data.Entity;
namespace YourCompany.EntityFramework
{
public class DropDatabaseInitializer<T> : IDatabaseInitializer<T> where T : DbContext, new()
{
public DropDatabaseInitializer(Action<T> seed = null)
{
Seed = seed ?? delegate {};
}
public Action<T> Seed { get; set; }
public void InitializeDatabase(T context)
{
if (context.Database.Exists())
{
context.Database.ExecuteSqlCommand("ALTER DATABASE " + context.Database.Connection.Database + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
context.Database.ExecuteSqlCommand("USE master DROP DATABASE " + context.Database.Connection.Database);
}
context.Database.Create();
Seed(context);
}
}
}
Esto funciona para mí y ayuda a sembrar fácilmente.
Esto funciona para mí pero no dave respuesta con el marco de entidad 5.0. Deberá desencadenar un viaje de base de datos como una consulta para activar la acción.
Global.asax
Database.SetInitializer<MedicalVarianceDataContext >(new DataInitializer());
otra parte
public class DropDatabaseInitializer<T> : IDatabaseInitializer<T> where T : DbContext, new()
{
public DropDatabaseInitializer(Action<T> seed = null)
{
}
protected virtual void Seed(T context) { }
public void InitializeDatabase(T context)
{
if (context.Database.Exists())
{
context.Database.ExecuteSqlCommand("ALTER DATABASE " + context.Database.Connection.Database + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
context.Database.ExecuteSqlCommand("USE master DROP DATABASE " + context.Database.Connection.Database);
}
context.Database.Create();
Seed(context);
}
}
supongo que también tendrá que añadir context.savechanges();
protected override void Seed(MedicalVarianceDataContext context)
{
new List<ViewLookUpIndividualUnit>{
new ViewLookUpIndividualUnit{ MvrsIndividualUnit="Clinic" ,Active=true}
}.ForEach(k => context.ViewLookUpIndividualUnits.Add(k));
base.Seed(context);
context.SaveChanges();
}
Agregué una edición en Dave, pero no sé si se llevará a cabo. Entonces aquí. – hidden
Tenga en cuenta que si el nombre de su base de datos contiene guiones, deberá hacer esto: '[Mi-Nombre de la base de datos-con-guiones]' en la parte 'ExecuteSqlCommand'. –
- 1. EF Codefirst validate unique property?
- 2. EF CodeFirst crear índice de clave principal no agrupado
- 3. CTP5 EF Código primera pregunta
- 4. EF CodeFirst: DropCreateDatabaseIfModelChanges no funciona
- 5. ¿Dónde se encuentra modelBuilder.IncludeMetadataInDatabase en EF CTP5?
- 6. Creando un EF CodeFirst DbContext usando Roslyn
- 7. ASP.NET MVC 3 EF CodeFirst - DBContext artículo de edición
- 8. EF 4.1 RTM - EntityTypeConfiguration
- 9. EF CodeFirst: Obtenga todos los tipos de POCO para DbContext
- 10. ¿Cómo podemos cambiar la convención de nomenclatura de claves foráneas en DB en EF Code First CTP5?
- 11. ¿Cuál es la ventaja de CodeFirst sobre Database First?
- 12. EF CF Configurar la asignación muchos-a-muchos manualmente
- 13. EF 4.2, CodeFirst - Propiedad de navegación dentro de un tipo complext
- 14. ¿Cómo se configura DbContext para que funcione con Oracle ODP.Net y EF CodeFirst?
- 15. iPhone Dev - Crear UIButton Manualmente
- 16. Cómo crear UINavigationBar soltar sombra
- 17. crear nueva sqlite Db
- 18. ¿Es posible generar un script db sql con Ef4 CodeFirst en build?
- 19. ¿Cómo crear un TypeTag manualmente?
- 20. Entity Framework CodeFirst pluralización de tabla
- 21. EF CTP5 - Carga ansiosa fuertemente tipada - ¿Cómo incluir las propiedades de navegación anidadas?
- 22. Generar campos de tipo de dinero usando el código primero EF CTP5
- 23. Cómo refactorizar código/esquema DB con código EF 4 primero - Migración de datos
- 24. Código de EF Primero CTP5, usando el método Incluir con la tabla Muchos a muchos
- 25. EF CodeFirst manejo de las excepciones de la base de datos al guardar los cambios
- 26. EF (Entity Framework) 4.3 La herramienta de migración no funciona en EF 4.1 DB
- 27. ¿Cómo configuro una columna en SQL Server para varchar (max) usando ASP.net EF Codefirst Annotations?
- 28. Cómo obtener metadatos de bases de datos de EF CodeFirst DbContext?
- 29. ¿Desea soltar TODOS los desencadenadores de Postgres DB?
- 30. Crear plataforma de edición de arrastrar y soltar en HTML5
puede utilizar el Database.SetInitializer, leer en los comentarios aquí http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an -existing-database.aspx –
Sin embargo, regularmente obtendrá la siguiente excepción: No se puede eliminar la base de datos "..." porque está actualmente en uso. Simplemente reinicia VisualStudio y estás bien. Esta característica CodeFirst sigue siendo bastante inestable. – RedGlyph