EF+LINQ事物處理

在使用EF的狀況下,怎麼進行事務的處理,來減小數據操做時的失誤,好比重複插入數據等等這些問題,這都是常常會遇到的一些問題數據庫

可是若是是我有多個站點,而後存在同類型的角色去操做同一條數據的同一個字段的話,那就須要對數據庫進行操做,這是數據庫裏面的事務了框架

這個另外再說。post

這裏有這麼一個很好的解決方式,EF6裏面提供了這麼一個方式來處理事物spa

Database.BeginTransaction() : 爲用戶提供一種簡單易用的方案,在dbEntityscode

中啓動並完成一個事務 -- 合併一系列操做到該事務中。同時使用戶更方便的指定事務隔離級別。blog

Database.UseTransaction() : 容許DbContext使用一個EF框架外的事務。事務

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 db= new dbEntitys()) 
            { 
                using (var dbContextTransaction = db.Database.BeginTransaction()) 
                { 
                    try 
                    { 
                    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(); 
                    } 
                } 
            } 
        } 
    } 
}
相關文章
相關標籤/搜索