zoukankan      html  css  js  c++  java
  • Entity Framework Working with 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(); 
                        } 
                    } 
                } 
            } 
        } 
    }
    namespace TransactionsExamples 
    { 
         class TransactionsExample 
         { 
            static void UsingExternalTransaction() 
            { 
                using (var conn = new SqlConnection("...")) 
                { 
                   conn.Open(); 
     
                   using (var sqlTxn = conn.BeginTransaction(System.Data.IsolationLevel.Snapshot)) 
                   { 
                       try 
                       { 
                           var sqlCommand = new SqlCommand(); 
                           sqlCommand.Connection = conn; 
                           sqlCommand.Transaction = sqlTxn; 
                           sqlCommand.CommandText = 
                               @"UPDATE Blogs SET Rating = 5" + 
                                " WHERE Name LIKE '%Entity Framework%'"; 
                           sqlCommand.ExecuteNonQuery(); 
     
                           using (var context =  
                             new BloggingContext(conn, contextOwnsConnection: false)) 
                            { 
                                context.Database.UseTransaction(sqlTxn); 
     
                                var query =  context.Posts.Where(p => p.Blog.Rating >= 5); 
                                foreach (var post in query) 
                                { 
                                    post.Title += "[Cool Blog]"; 
                                } 
                               context.SaveChanges(); 
                            } 
     
                            sqlTxn.Commit(); 
                        } 
                        catch (Exception) 
                        { 
                            sqlTxn.Rollback(); 
                        } 
                    } 
                } 
            } 
        } 
    }
    namespace TransactionsExamples 
    { 
        class TransactionsExample 
        { 
            static void UsingTransactionScope() 
            { 
                using (var scope = new TransactionScope(TransactionScopeOption.Required)) 
                { 
                    using (var conn = new SqlConnection("...")) 
                    { 
                        conn.Open(); 
     
                        var sqlCommand = new SqlCommand(); 
                        sqlCommand.Connection = conn; 
                        sqlCommand.CommandText = 
                            @"UPDATE Blogs SET Rating = 5" + 
                                " WHERE Name LIKE '%Entity Framework%'"; 
                        sqlCommand.ExecuteNonQuery(); 
     
                        using (var context = 
                            new BloggingContext(conn, contextOwnsConnection: false)) 
                        { 
                            var query = context.Posts.Where(p => p.Blog.Rating > 5); 
                            foreach (var post in query) 
                            { 
                                post.Title += "[Cool Blog]"; 
                            } 
                            context.SaveChanges(); 
                        } 
                    } 
     
                    scope.Complete(); 
                } 
            } 
        } 
    }
  • 相关阅读:
    redis未授权访问简单总结
    CORS跨域资源共享漏洞初探
    Mysql UDF提权方法
    hacknos-player靶机渗透
    深入理解Java虚拟机-类加载连接和初始化解析
    Dnslog盲注
    让服务器使用密钥
    自动备份站点
    自动放行nginx后台访问ip
    mysql增备
  • 原文地址:https://www.cnblogs.com/liandy0906/p/7136134.html
Copyright © 2011-2022 走看看