[EF]事務處理

EF支持事務處理操作,以下語句會獲取當前DbContext對象專用的DbContextTransaction()事務處理對象

DbContextTransaction transaction=context.Database.BeginTransaction();
獲取transaction之後,期間任何與context有關的數據操作均會納入此事務處理的範圍中,調用transaction.Commit方法即可完成事務處理,若要放棄事務處理,則調用transaction.Rollback方法即可達到目的。
//using TransactionsDemo.Model;

        using (KTStoreContext context = new KTStoreContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        var products = context.Products;
                        foreach (Product product in products)
                        {
                            int p = (int)(product.Price * 0.5);
                            product.SPrice = p;
                        }
                        int c = context.SaveChanges();
                        transaction.Commit();
                        Console.WriteLine("更新了 {0} 項數據", c);
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Console.WriteLine("事務處理失敗");
                    }
                }
            }
            Console.ReadKey();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章