TransactionScope对存储过程

时间:2013-10-01 20:04:36

标签: entity-framework tsql stored-procedures azure-sql-database race-condition

我有一个托管在多台服务器上的Web服务,随着流量的增加,竞争条件出现。我们在Azure上使用实体框架和托管,我一直在研究使用TransactionScope编写查询或将逻辑移入存储过程并在那里进行事务处理。

我想知道使用TransactionScope或存储过程有什么区别?这个问题的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

我强烈反对您不要在存储过程中实现事务。这可能会极大地限制您在创建工作单元(事务处理单元)时的灵活性。由于您使用EF,我建议您管理业务层代码中的事务。通过这种方式,您可以更灵活地定义和管理工作单元。

答案 1 :(得分:0)

TransactionScope允许EF语句中的事务。所以整个linq语句都会回滚。而SPROCS中的事务只会回滚在sproc中处理的任何内容。

因为您正在使用EF,它允许您通过Linq与数据库进行交互,所以您可以使用TransactionScope IMO