我是否需要处理c#app层中的事务以及单个插入的数据库存储过程以及多个插入

时间:2015-02-19 13:43:49

标签: c# .net architecture

我是否需要处理C#app层中的事务以及单个插入的数据库存储过程以及多个插入?

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

1 个答案:

答案 0 :(得分:0)

我建议你在这里考虑每个组件的职责。

您的存储过程有自己的任务。如果存储过程有多个必须全部执行的语句,那么是的,该过程应该创建&管理自己的交易。

例如,如果存储过程的任务是更新用户的电子邮件地址然后生成审计记录,那么这两个步骤都应该在过程内的事务中。该事务对于完成任务的过程是必要的。

但是,您的应用程序可能具有比单个存储过程更大的任务 - 您可能正在执行需要多个过程的任务。在这种情况下,应用程序应为应用程序的任务创建和管理事务

如果您的应用程序每次调用存储过程时都创建一个事务,它(通常)不会造成任何伤害。但这并不是管理应用层交易的重点。在应用程序层创建事务的关键是将 set 操作串起来。

如果您发现应用程序层通常执行与存储过程一对一的复杂操作,您可能需要重新考虑您的体系结构。