Мне нужно использовать область транзакций с Entity Framework 4 и базу данных Firebird. Я использую провайдер FireBird Entity Framework.
Моя проблема в том, что после вызова SaveChanges для объекта данные сохраняются в базе данных, а не при вызове TransactionsScope.Complete (). Это приводит к тому, что данные никогда не откатываются, даже если исключение происходит внутри блока using (TransactionScope ...).
Это, похоже, проблема с БД FireBird, я тестировал точно такой же код с MS SQL 2008, и RollBack работает правильно.
Что мне нужно сделать, чтобы включить откат с FireBird?
using ( var context = new Model1Container() )
{
bool success = false;
using ( TransactionScope transactionScope = new TransactionScope() )
{
PERSON person = new PERSON();
person.NAME = "test";
context.AddToPERSON(person);
context.SaveChanges(SaveOptions.DetectChangesBeforeSave);
success = true;
//transactionScope.Complete(); If this line is not hit, Transaction should Roll Back, but it does not.
}
if ( success )
{
context.AcceptAllChanges();
}
}