Valery Mizonov has published a paper on SQLCAT, that discusses his subclassing of the ADO.NET classes like SqlConnection to handle the retry scenarios associated with SQL Azure.
“One of the important considerations is the way how client connections are to be handled. SQL Azure brings in some unique behavioral attributes which can manifest themselves when a client is establishing connections to a SQL Azure database or running queries against it. The database connections can be throttled internally by SQL Azure fabric for several reasons, such as excessive resource usage, long-running transactions, nodes being taken offline for upgrade and other possible failover and load balancing actions, leading to termination of a client session or temporary inability to establish a new connections. The database connections may also be dropped due to the variety of reasons related to network connectivity between client and distant Microsoft data centers: quality of network, intermittent network faults in the client’s LAN or WAN infrastructure and other transient technical reasons.”
The code is a great stepping-stone; replacing the standard ADO.NET calls with his custom classes.