Может ли кто-нибудь рассказать мне, как TransactionScope гарантирует целостность данных в нескольких базах данных? Я предполагаю, что он сначала отправляет команды в базы данных, а затем ждет, пока базы данных ответят, прежде чем отправить им сообщение для применения отправленной ранее команды. Однако, когда выполнение резко останавливается при отправке этих сообщений о применении, мы все равно можем получить базу данных, которая применила команду, и базу данных, которая этого не сделала. Может кто-нибудь пролить некоторый свет на это?
Изменить:
Я думаю, что я спрашиваю, могу ли я полагаться на TransactionScope, чтобы гарантировать целостность данных при записи в несколько баз данных в случае отключения питания или внезапного отключения.
Спасибо, Бас
Пример:
using(var scope=new TransactionScope())
{
using (var context = new FirstEntities())
{
context.AddToSomethingSet(new Something());
context.SaveChanges();
}
using (var context = new SecondEntities())
{
context.AddToSomethingElseSet(new SomethingElse());
context.SaveChanges();
}
scope.Complete();
}