欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

EF+LINQ事物处理

程序员文章站 2022-05-25 14:39:07
在使用EF的情况下,可能也会存在说我有多个站点,同时去访问一个数据库,操作同一条数据的同一个值,那么我们怎么来进行事物的处理呢 有这么一个很好的解决方式 EF6里面提供了这么一个方式来处理事物 Database.BeginTransaction() : 为用户提供一种简单易用的方案,在dbEntit ......

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