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(); 
                } 
            } 
        } 
    }
  • 相关阅读:
    OpenSLAM
    CAD&CG GDC 2018大会论文录用名单
    hdu4328(经典dp用悬线法求最大子矩形)
    hdu3729(二分图)
    hdu 4055(经典问题)
    Codeforces Round #207 (Div. 1) B (gcd的巧妙运用)
    hdu1066(经典题)
    zoj3662(dp)
    zoj3659(经典并查集)
    hdu4565(矩阵快速幂+经典的数学处理)
  • 原文地址:https://www.cnblogs.com/liandy0906/p/7136134.html
Copyright © 2011-2022 走看看