Является ли ObjectContext.SaveChanges ACIDIC? - PullRequest
0 голосов
/ 28 сентября 2011

Как следует из заголовка, является ли следующий код кислотным, например, если я вызову SaveChanges, будут ли выполняться все операторы Product.Add INSERT (или откатываться в случае ошибки).

using(DBEntities ctx = new DBEntities())
{
    for(int i = 0; i < 10; i++)
    {
        ctx.Products.Add(new Product("Product " + (i + 1)));
    }

    ctx.SaveChanges();
}

MSDN состояния:

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

Однако, глядя на профилировщик, похоже, это не так.Нужно ли мне обернуть блок TransactionScope?

1 Ответ

2 голосов
/ 28 сентября 2011
using(DBEntities ctx = new DBEntities())
{
    for(int i = 0; i < 10; i++)
    {
        ctx.Products.Add(new Product("Product " + (i + 1)));
    }
    ctx.SaveChanges();
}

Этот вызов SaveChanges () будет выполнен в транзакции автоматически. Вам не нужно будет оборачивать его под новую область транзакций.

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