Except that sometimes you need to do something and then do more
things in source code that depend on that something and so on.
Unless you move your entire application into the SP, you'll have no
choice but to wrap the transaction into an ADO.NET call. Apart from
the fact that (in our case) it may not be feasible to rewrite 2.5
million lines of code to accomodate SP only transactions, not to
mention that some of the older parts of the code (that are being
rewritten into .NET) use embedded SQL...
You'll just have to evaluate your application architecture if it
already exists, or decide how you will be accessing the data at all
times in your application of you are currently designing it. There's
a time and place for everything. But know this, if you begin a
transaction in the SP and for some reason need to execute source code
that may depending on something from a currently running transaction,
and it attempts to start a transaction and call an SP that starts its
own transaction, you'll get an exception. So you either do it one
way or another but not both, unless you want to excercise your
patients and stamina.
Thanks,
Shawn