Существует ли транзакция по умолчанию для метода SaveChanges? - PullRequest
0 голосов
/ 06 декабря 2018

Если я сделал несколько операций с одной и той же Entity Framework DbContext (добавить и обновить) с одним вызовом SaveChanges, будут ли эти изменения выполнены как транзакция или нет?

using (MyContext context = new MyContext())
{
    context.Table1.Add(entity1);
    context.Table2.Add(entity2);
    context.SaveChanges();
}

или есть шанс выполнить только один из них, не выполняя другой?

1 Ответ

0 голосов
/ 06 декабря 2018

Да, он заключен в транзакцию:

Во всех версиях Entity Framework при каждом выполнении SaveChanges () для вставки, обновления или удаления в базе данных платформа будет заключать эту операцию всделка.Эта транзакция длится достаточно долго, чтобы выполнить операцию, а затем завершается.Когда вы выполняете другую такую ​​операцию, запускается новая транзакция.

https://docs.microsoft.com/en-us/ef/ef6/saving/transactions

Нельзя выполнить частичное сохранение, в противном случае ваш DbContext может войти в несогласованное состояние.Вы можете вызывать SaveChanges только несколько раз после каждой операции изменения.

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