如果我使用相同的实体框架DbContext
进行了多项操作(添加和更新)
只需致电SaveChanges
,这些更改是否会作为交易完成?
using (MyContext context = new MyContext())
{
context.Table1.Add(entity1);
context.Table2.Add(entity2);
context.SaveChanges();
}
还是有机会只执行其中一个而不执行另一个?
答案 0 :(得分:2)
是的,它包装在交易中:
在所有版本的Entity Framework中,无论何时执行 SaveChanges()可以在数据库上插入,更新或删除 框架会将该操作包装在事务中。此交易 持续时间不足以执行操作,然后完成。 当您执行另一个这样的操作时,将开始新的事务。
https://docs.microsoft.com/en-us/ef/ef6/saving/transactions
您不能进行任何部分保存,否则,您的DbContext可能会进入不一致状态。每次更改操作之后,您只能多次调用SaveChanges
。