Primero intenta realizar algunas pruebas unitarias con el código EF 4.1. Tengo mi live db (SQL Server) y mi unidad de prueba DB (Sql CE). Después de luchar (y perder) con EF, SQL CE 4.0 y soporte de transacción que decidieron la forma más sencilla de ejecutar mi prueba era:Entity Framework 4.1 "Code First" No se vuelve a llamar a SetInitializer después de Database.Delete
- Crear prueba Db
- Run
- Eliminar Db
- Enjuague y repetir
tengo mi [Configuración] y [] tearDown funciones:
[SetUp]
public void Init()
{
System.Data.Entity.Database.SetInitializer(new MyTestContextInitializer());
_dbContext = ContainerFactory.Container.GetInstance<IContext>();
_testConnection = _dbContext.ConnectionString;
}
[TearDown]
public void Cleanup()
{
_dbContext.Dispose();
System.Data.Entity.Database.Delete(_testConnection);
}
El problema es que System.Data.Entity.Database.SetInitializer no llama a MyTestContextInitializer después de la primera prueba.
De ahí la segunda prueba a continuación, falla con:
System.Data.EntityException: El proveedor subyacente falló en Abrir.
----> System.Data.SqlServerCe.SqlCeException : No se puede encontrar el archivo de base de datos. Compruebe la ruta a la base de datos
TIA para cualquier punteros
Encantador, eso me ayudó a resolver lo que pensaba que era bloquear el archivo DB (CE 4) entre los dispositivos de prueba. +1 :) –
Brilliant! Tenía exactamente este problema, con EF5 no menos, y he estado atrapado en él por un tiempo. Esto me lo arregló, gracias. –