Ceci est une question très "énorme". Je peux dire que nous utilisons un Mappeur O/R et chaque "requête" à la base de données a besoin d'un objet appelé PersistenceBroker. Cette classe est en charge de tous les DB Stuff liés à la connexion, à l'authentification, etc.
Nous avons écrit un PersistenceBrokerFactory.GetCurrentBroker() qui retourne le courtier "en service". Si la base de données tombe soudainement en panne (pour une raison quelconque), l'objet CONN sera "timeout()" après 30secs (ou ce que vous définissez). Si cela se produit, nous montrons à l'utilisateur qu'il est hors ligne et affiche un bouton de reconnexion. D'autre part, pour fournir une indication visuelle que l'utilisateur a la connectivité, nous avons un thread en arrière-plan, qui vérifie la connectivité Internet toutes les 15 secondes. Nous faisons 1 ping à google.com. ;) Si cela échoue, nous supposons qu'Internet est en quelque sorte cassé, et nous mettons à jour une barre d'état.
Je pourrais vous montrer tout ce code pour le moniteur de santé du réseau si vous le vouliez. J'ai pris quelques morceaux de google et d'autres je me suis fait moi-même :)