Asp.net中的事务方法
本文关键字:事务 方法 net Asp | 更新日期: 2023-09-27 18:06:21
我之前一直在Grails中工作,在Grails中,和Spring一样,服务方法默认是事务性的,如果我们愿意,我们可以通过注释来改变它,但现在我在ASP.net中工作,我想知道是否有类似的东西。或者我们必须在每个方法结束时显式地打开事务并关闭它。我使用实体框架…
这是一篇很好的关于EF中的事务的文章处理事务(EF6以后)
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.SqlClient;
using System.Linq;
using System.Transactions;
namespace TransactionsExamples
{
class TransactionsExample
{
static void StartOwnTransactionWithinContext()
{
using (var context = new BloggingContext())
{
using (var dbContextTransaction = context.Database.BeginTransaction())
{
try
{
context.Database.ExecuteSqlCommand(
@"UPDATE Blogs SET Rating = 5" +
" WHERE Name LIKE '%Entity Framework%'"
);
var query = context.Posts.Where(p => p.Blog.Rating >= 5);
foreach (var post in query)
{
post.Title += "[Cool Blog]";
}
context.SaveChanges();
dbContextTransaction.Commit();
}
catch (Exception)
{
dbContextTransaction.Rollback();
}
}
}
}
}
}
使用EntityFramework,当您在DbContext
实例上调用SaveChanges
(或SaveChangesAsync
)时,所有挂起的数据存储操作将在单个工作单元(事务)中发生。
如果您希望将工作拆分为多个事务,则每次要提交事务时都需要调用SaveChanges
(或异步等效)。