, поскольку DROP DATABASE не разрешен в TransactionScope.
шлом я писал модульные тесты для простых операций CRUD при создании кода доступа к данным / хранилища, который выглядит примерно так:
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();
}
}
}
Сегодня я возился с EF4 Code First и понял, что понятия не имею, как этот сценарий тестирования переводится в лексикон Entity Framework. Кажется, если я позвонюDbContext.SaveChanges()
, это экономита также совершает, независимо от того,AcceptAllChanges()
назывался. Даже используяObjectContext
вместоDbContext
Я не могу понять, как этот простой тестовый сценарий может быть воссоздан без очистки вручную созданных макетов / тестовых объектов. Я прочиталэта статья на MSDN, ноTransactionScope
на самом деле не имеетRollback
Метод типа либо. Я используюTransactionScope
и никогда не звониComplete
? Есть ли другой способ или способ использования DbContext и / или ObjectContext для отката во время модульных тестов? Нужно ли полностью перестраивать свое мышление для TDD с помощью EF4 Code First?