SaveChanges方法是否有默认事务?

时间:2018-12-06 14:51:17

标签: entity-framework transactions

如果我使用相同的实体框架DbContext进行了多项操作(添加和更新) 只需致电SaveChanges,这些更改是否会作为交易完成?

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

还是有机会只执行其中一个而不执行另一个?

1 个答案:

答案 0 :(得分:2)

是的,它包装在交易中:

  

在所有版本的Entity Framework中,无论何时执行   SaveChanges()可以在数据库上插入,更新或删除   框架会将该操作包装在事务中。此交易   持续时间不足以执行操作,然后完成。   当您执行另一个这样的操作时,将开始新的事务。

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

您不能进行任何部分保存,否则,您的DbContext可能会进入不一致状态。每次更改操作之后,您只能多次调用SaveChanges