在Entity Framework中使用事务

Posted itjeff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Entity Framework中使用事务相关的知识,希望对你有一定的参考价值。

继续为想使用Entity Framework的朋友在前面探路,分享的东西虽然技术含量不高,但都是经过实践检验的。

在Entity Framework中使用事务很简单,将操作放在TransactionScope中,并通过Complete()方法提交事务即可。

示例代码如下:

复制代码
using (BlogDbContext context =new BlogDbContext())
{
using (TransactionScope transaction =new TransactionScope())
{
context.BlogPosts.Add(blogPost);
context.SaveChanges();
postBody.ID = blogPost.ID;
context.EntryViewCounts.Add(
new EntryViewCount() { EntryID = blogPost.ID });
context.PostBodys.Add(postBody);
context.SaveChanges();
//提交事务
transaction.Complete();
}
}
复制代码

经过测试验证,在transaction.Complete()之前的代码中只要出现异常,事务就会回滚。

【更新】

更好的解决方法见 Working with Transactions (EF6 Onwards)

以上是关于在Entity Framework中使用事务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Entity Framework 6 DbContext.Database.BeginTransaction 中配置事务超时?

在与 Entity Framework 的事务中通过 MassTransit 发送消息

Entity Framework Core 数据保存原理详解

Entity Framework Core 数据保存原理详解

Entity Framework :Using Transaction Scope 如何检查 DbContext 是不是有事务?

一文学会使用Entity Framework Core