Я создал очень простую базу данных, используя Entity Framework 4. Я хотел бы иметь возможность использовать транзакции для сущностей, но я не могу предотвратить откат изменений.Мне действительно просто нужен способ отказаться от временных изменений в сущностях, прежде чем они будут сохранены в базе данных.
Например, в следующем коде используется контекст объекта инфраструктуры объектов "MusicContainer".Внутри TransactionScope создается объект Artist.Затем транзакция заканчивается без завершения;поэтому я ожидаю, что транзакция будет отменена.Но программа запускается так, как будто я никогда не создавал TransactionScope;после завершения TransactionScope строка music.SaveChanges () сохраняет объект в базе данных.
class Program
{
static void Main(string[] args)
{
using (MusicContainer music = new MusicContainer())
{
using (TransactionScope transaction = new TransactionScope())
{
Artist artist = new Artist { Name = "Test" };
music.Artists.AddObject(artist);
}
// The transaction ended without Complete(); shouldn't the changes be abandoned?
music.SaveChanges();
}
}
}
Если структура сущностей не использует TransactionScope так, как я ожидаю, здесь, как я могу получить требуемую функциональность?У меня есть несколько обстоятельств, когда вызывающий функции проходит в MusicContainer, и мне нужно оставить MusicContainer в чистом состоянии, прежде чем я вернусь из функции (т. Е. Отката изменений, чтобы они не были случайно сохранены с другим SaveChanges, называемымна том же объекте MusicContainer).