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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta