About DTS transactions
There has been some discussion recently about the Distributed Transaction Service(DTS) errors that occur in UpdateOrder and InsertOrder methods of the MB.TheBeerHouse.BLL.Store.Order class that probably needs some explanation.
When using a TransactionScope object, in our case scope, DTS will most likely be called to perform the transaction handling. In a large scale website where the SQL server may not reside on the same machine, or there may be multiple databases, this makes sense because if errors occur the transaction can be cancelled, maintaining the database integrity.
In the UpdateOrder method, note that we update the order and then we turn around and do multiple decrement operations to the products. If all goes well, there is no problem, however what if one of the decrements fails? Likely we want a rollback of all the operations so that the stock counts can accurately reflect the stock. Because all of this is taking place in the business tier we're using TransactionScope.
Now here's the nasty part. When TransactionScope initializes it determines if DTS should be called to optimize the transaction. My understanding is that this is determined primarily by the number of unique connections that are open. So, if you want keep the transaction processing from being "promoted" you have to limit the number of connections that are open or use connection pooling.
Simply eliminating the transaction processing is not a good solution, in my opinion, but if you're willing to take the chance then more power to you.