Asp.net中的事务方法

时间:2015-08-04 13:45:57

标签: c# asp.net entity-framework

我之前和Grails一样在Grails工作,和Spring一样,默认情况下服务方法是事务性的,如果需要,我们可以通过注释更改它,但现在我在ASP.net工作,我想知道是否有类似的东西。 或者我们必须明确地打开事务并在每个方法结束时关闭它。我正在使用实体框架......

2 个答案:

答案 0 :(得分:1)

使用EntityFramework,当您在SaveChanges实例上调用SaveChangesAsync(或DbContext)时,所有待处理数据存储操作都将在单个工作单元(事务)中发生。 / p>

如果要将工作拆分为多个事务,则每次要提交事务时都需要调用SaveChanges(或异步等效项)。

答案 1 :(得分:1)

这是关于EF交易的非常好的文章 Working with Transactions (EF6 Onwards)

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(); 
                    } 
                } 
            } 
        } 
    } 
}