Я начал использовать TransactionScope , чтобы помочь с моими модульными тестами, чтобы вернуть мою тестовую базу данных в прежнее состояние.Используя это с SpecFlow, у меня есть базовый класс, например, так:
public class TransactionScopedFeature
{
private TransactionScope Scope { get; set; }
[BeforeScenario]
public void BaseSetup()
{
this.Scope = new TransactionScope(TransactionScopeOption.RequiresNew);
}
[AfterScenario]
public void BaseCleanup()
{
if (this.Scope != null)
{
this.Scope.Dispose();
}
}
}
Все вышеперечисленное работает, в том случае, когда я добавляю записи в базу данных, когда я запрашиваю таблицы после завершения тестов,эти таблицы пусты.Отличный материал, и действительно очень умный!
Мой вопрос касается столбцов идентификации в этих таблицах.Что я заметил, так это то, что, когда я запускаю свои тесты много раз, столбец ID моей тестовой таблицы увеличивается на 1. Я предполагал, что, поскольку TransactionScope будет выполнять откат изменений, начальное число идентификаторов также будет откатываться.
Я ошибаюсь, когда делаю это предположение - так ли это работают базы данных?Если это так, я мог бы также запустить сценарий SQL перед каждым из моих сценариев, который делает это:
DBCC CHECKIDENT ('dbo.Items', reseed, 0)
Я просто хотел проверить, не делал ли я что-то не так,или это нормальное поведение базы данных.
Приветствия.Иак.