Какое значение имеет TransactionContext при добавлении объекта? - PullRequest
1 голос
/ 30 мая 2011

Имеет ли значение TransactionScope какая-либо разница, если в таблице только одна вставка?

Есть

MyObjectContext.Messages.Save( message, m => m.ID == message.ID);
MyObjectContext.SaveChanges();

отличается от

using( var ts = new TransactionScope() )
{
    MyObjectContext.Messages.Save( message, m => m.ID == message.ID);
    MyObjectContext.SaveChanges();
    ts.Complete();
}

а как именно?

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Неважно, сохраняете ли вы один элемент или несколько элементов, использование TransactionScope здесь избыточно.

Из документации для ObjectContext.SaveChanges:

SaveChanges работает в транзакции.SaveChanges откатит эту транзакцию и выдаст исключение, если какой-либо из грязных объектов ObjectStateEntry не может быть сохранен.

Таким образом, в вашем примере вы наложены на TransactionScope без дополнительной выгоды.

Теперь, если бы у вас было два отдельных ObjectContext экземпляра с отдельными наборами данных, которые вы хотели бы гарантировать, что оба были сохранены, то вам абсолютно необходимо было бы TransactionScope вокруг обоих вызовов ObjectContext.SaveChanges.

1 голос
/ 30 мая 2011

Есть разница.Если вы используете только SaveChanges, у вас все еще есть транзакция, но она имеет уровень изоляции по умолчанию для сервера базы данных - в случае SQL-сервера это означает, что выполнено чтение.Если вы используете TransactionScope с конфигурацией по умолчанию, у вас есть уровень изоляции сериализованных транзакций, но вы можете изменить его, если вы используете другой конструктор TransactionScope.

Так что это имеет значение, если вам нужен контроль над уровнем изоляции транзакций.

1 голос
/ 30 мая 2011

Нет, разницы нет. SaveChanges работает в рамках транзакции. SaveChanges откатит эту транзакцию и выдаст исключение, если какой-либо из грязных ObjectStateEntry объектов не может быть сохранен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...