2011-01-22 109 views
1

我實現asp.net MVC的Web應用程序,在這裏我使用LINQ到SQL來操作數據庫中的數據。但在我的一個動作中,我想插入多個表項,這些表項通過引用前面的插入ID來相互依賴。所以,我只是wnat知道如何處理事務,比如開始事務,提交,回滾和ADO.net都喜歡。如何管理這個。如果插入的一個在操作過程中墜毀,該怎麼辦?處理事務爲sql

注: - 我不使用存儲過程在這裏。我正在使用Lambda表達式和方法。這些也用於不同的經理類。 實施例: 在創建主體 - SubjectManager類使用的方法來插入受試者的Infor,返回主體ID。在這個subjectid我插入讓說它的章節與經理類中的另一種方法作爲章節管理器。它再次返回ChapterId,在這個chapeter ID的基礎上插入chapter的主題。這再次使用像上述相同的主題管理器。在每個manger類我創建dataContext對象相同。而且我在我的控制器的單一動作中控制着所有這些。但擔心交易管理。我如何在這裏使用?

回答

1

刪除代碼贊成Neil的回答

+0

謝謝,它會適用於所有的整個數據操作? – 2011-01-22 07:54:54

1

DataContext已包含一個嵌入式事務對象。例如,假設您正在爲客戶下訂單。您可以設置模型,以便下面的代碼用一個SubmitChanges更新Customer和Order表。只要這兩個表之間存在外鍵關係,嵌入式交易對象可以同時處理客戶更新,並在同一個事務的順序插入。使用TransactionScope對象來包裝一個DataContext是多餘的:

using (DataContext dc = new DataContext()) 
{ 
    Order order = new Order(); 

    order.ProductID = 283564; 
    order.Quantity = 7; 
    order.OrderDate = DateTime.Now; 

    Customer customer = dc.Customers.Single(c => c.CustomerID == 6); 

    customer.LastUpdate = order.OrderDate; 
    customer.Orders.Add(order); 

    dc.SubmitChanges(); 
}