Effort.Exceptions.EffortException: la base de datos no se ha inicializado, ¿después de una actualización sin compromiso?

c# effort entity-framework entity-framework-6

Pregunta

¿Por qué ocurre esta excepción? ¿Es esto un error?

Estoy usando Effort, la biblioteca de pruebas de EF para crear una instancia en memoria de mi base de datos y encontrar este interesante escenario:

  1. Abrir DbContext1
  2. Agregar elemento a la Table (no guardar)
  3. Cerrar DbContext1
  4. Abrir DbContext2
  5. Contar elementos en la Table

Effort.Exceptions.EffortException : Database has not been initialized.

Sin embargo, si realizo un conteo (paso 5) también en DbContext1 , ¿el conteo en DbContext2 no falla?

Código Completo :

public void TestEF()
{
   var factory = new InMemoryMyApplicationDbContextFactory();

   using (var db = factory.CreateDbContext())
   {
      //uncomment this line to prevent exception - why????
      //db.Orders.Count();

      db.Orders.Add(new Order{ Id = Guid.NewGuid() }); 

      // intentionally do not call db.SaveChanges()
   }

   using (var db = factory.CreateDbContext())
   {
      // throws an exception if no read was performed above
      db.Orders.Count();
   }    
}    

Excepción completa:

public void TestEF()
{
   var factory = new InMemoryMyApplicationDbContextFactory();

   using (var db = factory.CreateDbContext())
   {
      //uncomment this line to prevent exception - why????
      //db.Orders.Count();

      db.Orders.Add(new Order{ Id = Guid.NewGuid() }); 

      // intentionally do not call db.SaveChanges()
   }

   using (var db = factory.CreateDbContext())
   {
      // throws an exception if no read was performed above
      db.Orders.Count();
   }    
}    

Respuesta popular

Tomé el consejo mencionado en el mensaje de excepción y agregué la siguiente línea a mi prueba dentro de la declaración de using

    db.Database.CreateIfNotExists();

y eso funciono para mi




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué