对于一个ORM框架,支持事务操作是必须的。EF Code-Frist本身就是支持事务的。
我们的每一次SaveChanges就是一个事务操作,只需要在所有更改都完成后,调用这个方法就可以了。
如果你不愿意,网上还有人给出了手动的开启事务的代码(我没有测试过):
DbConnection con = ((IObjectContextAdapter)ctx).ObjectContext.Connection; con.Open(); using (var tran = con.BeginTransaction()) { // 这里才是事务中的代码 tran.Commit(); } con.Close();
以上都是针对一个DbContext,也就是一个数据库的时候,如果操作涉及到多个数据库,还是使用分布式事务操作比较靠谱。
关于分布式事务,请移步我的另一篇文章:.NET分布式事务处理