C# 事务应在.NET或SQL Server中处理?
我进入了一个应用程序,它使用.NET/C作为前端,SQL Server 2008作为后端。我发现事务总是用c代码处理的。对于这个项目来说,不应该在存储过程中使用事务似乎是一条不成文的规则 我个人认为应该在存储过程中处理事务,因为它可以对代码进行更多的控制!尽管我们不需要打开事务,但脚本中可能会发生很多验证。我们需要在执行插入/更新/删除之前打开一个事务,并尽快关闭它C# 事务应在.NET或SQL Server中处理?,c#,sql-server,sql-server-2008,sql-server-2005,C#,Sql Server,Sql Server 2008,Sql Server 2005,我进入了一个应用程序,它使用.NET/C作为前端,SQL Server 2008作为后端。我发现事务总是用c代码处理的。对于这个项目来说,不应该在存储过程中使用事务似乎是一条不成文的规则 我个人认为应该在存储过程中处理事务,因为它可以对代码进行更多的控制!尽管我们不需要打开事务,但脚本中可能会发生很多验证。我们需要在执行插入/更新/删除之前打开一个事务,并尽快关闭它 寻找答案,帮助我了解处理事务的最佳实践,以及何时我们需要选择存储过程中的事务。没有硬性规定,但我看到了从业务层控制事务的几个原因:
寻找答案,帮助我了解处理事务的最佳实践,以及何时我们需要选择存储过程中的事务。没有硬性规定,但我看到了从业务层控制事务的几个原因:
- 跨数据存储边界的通信。事务不必针对RDBMS;它们可以针对各种实体
- 基于业务逻辑回滚/提交事务的能力,您正在调用的特定存储过程可能无法使用这些业务逻辑
- 在单个事务中调用任意查询集的能力。这也消除了对事务计数的担忧
- 个人偏好:c#有一个更优雅的声明事务的结构:使用块的
。相比之下,我总是发现存储过程中的事务在跳到回滚/提交时非常麻烦
如果是一个问题,您可以将有问题的过程分成两个过程,并从
TransactionScope
外部调用一个过程。没有严格的规则,但我认为有几个原因可以从业务层控制事务:
- 跨数据存储边界的通信。事务不必针对RDBMS;它们可以针对各种实体
- 基于业务逻辑回滚/提交事务的能力,您正在调用的特定存储过程可能无法使用这些业务逻辑
- 在单个事务中调用任意查询集的能力。这也消除了对事务计数的担忧
- 个人偏好:c#有一个更优雅的声明事务的结构:使用块的
。相比之下,我总是发现存储过程中的事务在跳到回滚/提交时非常麻烦
事务范围
外部调用一个过程