注需要添加DAL层对using System.Transactions的引用
在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();
}
}
{
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()之前的代码中只要出现异常,事务就会回滚。