我有一个托管在多台服务器上的Web服务,随着流量的增加,竞争条件出现。我们在Azure上使用实体框架和托管,我一直在研究使用TransactionScope
编写查询或将逻辑移入存储过程并在那里进行事务处理。
我想知道使用TransactionScope
或存储过程有什么区别?这个问题的最佳做法是什么?
答案 0 :(得分:2)
我强烈反对您不要在存储过程中实现事务。这可能会极大地限制您在创建工作单元(事务处理单元)时的灵活性。由于您使用EF,我建议您管理业务层代码中的事务。通过这种方式,您可以更灵活地定义和管理工作单元。
答案 1 :(得分:0)
TransactionScope允许EF语句中的事务。所以整个linq语句都会回滚。而SPROCS中的事务只会回滚在sproc中处理的任何内容。
因为您正在使用EF,它允许您通过Linq与数据库进行交互,所以您可以使用TransactionScope IMO