簡體   English   中英

我是否需要處理c#應用程序層中的事務以及單次插入以及多次插入的數據庫存儲過程

[英]Do I need to handle transaction in c# app layer as well database store process for single insert as well multiple insert

我是否需要處理C#應用程序層中的事務以及單次插入和多次插入的數據庫存儲過程?

C#

try
{ 
    using (var transaction = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) 
    {
         //Call Data Access Layer---Executing S proc
         transaction.Complete(); 
         return result; 
    } 
}
catch (Exception ex) 
{ 
     throw new Exception(); 
}

SQL存儲過程:

Create process
As
Begin try
    Begin transaction
    Commit
End try
Begin catch
    Rollback
End catch

我建議您在這里考慮每個組件的職責。

您的存儲過程有其任務要做。 如果存儲過程具有多個必須全部執行的語句,則可以,該過程應創建並管理自己的事務。

例如,如果存儲過程的任務是更新用戶的電子郵件地址,然后生成審核記錄,則這兩個步驟都應該在過程內部的事務中。 該事務對於該程序完成其任務是必需的。

但是,您的應用程序可能具有比單個存儲過程更大的任務-您可能正在執行需要多個過程的任務。 在那種情況下,應用程序應該為應用程序的task創建和管理事務。

如果您的應用程序每次調用存儲過程都創建一個事務,那么它(通常)不會造成任何傷害。 但這並不是在應用程序層上管理事務的真正意義。 在應用程序層上創建事務的目的是將一操作串在一起。

如果發現您的應用程序層通常正在執行與存儲過程一對一對應的復雜操作,則可能需要重新考慮您的體系結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM