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(); 
                } 
            } 
        } 
    }
  • 相关阅读:
    《Android 4游戏高级编程(第2版)》书评
    push研究——Apache Mina探索初步
    Android UI开发第二十三篇——分享书架UI实现
    cookie学习总结
    Web.xml配置详解
    Java序列化的机制和原理
    Java高级技术(汇总中...)
    [Java]HashMap的两种排序方式
    jdk与jre的区别
    DM,NLP常用算法汇总
  • 原文地址:https://www.cnblogs.com/liandy0906/p/7136134.html
Copyright © 2011-2022 走看看