EF+LINQ事物處理


在使用EF的情況下,怎么進行事務的處理,來減少數據操作時的失誤,比如重復插入數據等等這些問題,這都是經常會遇到的一些問題

但是如果是我有多個站點,然后存在同類型的角色去操作同一條數據的同一個字段的話,那就需要對數據庫進行操作,這是數據庫里面的事務了

這個另外再說。

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

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM