Código EF4 Primero, TDD, CRUD y Transacciones
En el pasado, escribí pruebas unitarias para operaciones CRUD simples al crear código de acceso a datos / repositorio que se parece a esto:
using(var connection = new WhateverConnection(connectionString))
{
connection.Open();
using(var transaction = connection.BeginTransaction())
{
try
{
//test the CRUD operation
}
finally
{
//gets rid of any stuff created during the test
transaction.Rollback();
}
}
}
Hoy estaba jugando con el Código EF4 Primero, y me di cuenta de que no tengo idea de cómo se traduce este escenario de prueba en el léxico Entity Framework. Parece que si llamoDbContext.SaveChanges()
, ahorray se compromete, independientemente de siAcceptAllChanges()
fue llamado. Incluso usandoObjectContext
en lugar deDbContext
, No puedo entender cómo se puede recrear este simple escenario de prueba sin limpiar manualmente ningún objeto simulado / de prueba creado. Yo leíeste artículo en MSDN, peroTransactionScope
realmente no tiene unRollback
tipo de método tampoco. UsoTransactionScope
y nunca llamesComplete
? ¿Hay otro método o forma de usar DbContext y / o ObjectContext para revertir durante las pruebas unitarias? ¿Necesito reajustar completamente mi pensamiento para TDD con EF4 Code First?