簡體   English   中英

Asp.net中的事務處理方法

[英]Transactional methods in Asp.net

我以前在Grails中工作過,在Grails中與Spring一樣,默認情況下服務方法是事務性的,如果需要,我們可以通過注釋來更改它,但是現在我在ASP.net中工作,我想知道是否有東西類似於。 或者,我們必須顯式打開事務並在每種方法結束時將其關閉。 我正在使用實體框架...

使用EntityFramework,當您在DbContext實例上調用SaveChanges (或SaveChangesAsync )時,所有待處理的數據存儲操作都將在單個工作單元(事務)中進行。

如果要將工作分成多個事務,則每次要提交事務時都希望調用SaveChanges (或異步等效項)。

這是一篇關於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(); 
                    } 
                } 
            } 
        } 
    } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM