2009-11-27 3 views
2

Je ne veux pas encapsuler chaque appel dans un bloc catch tryComment se reconnecter à une connexion perdue quand il est perdu LINQ sql automagiquement

est-il un événement que je peux souscrire, quand une connexion est perdu ou timeout afin que je puisse me reconnecter ..

ou un moyen de ne pas vérifier chaque requête linq.

et sinon pourquoi pas!

Modifier: Linq to Entity a-t-il ceci?

Modifier: J'utilise Microsoft SQL Azure, et il baisse beaucoup de connexions.

Editer: J'ouvre une nouvelle connexion sur chaque appel à la base de données. donc ce n'est pas que je laisse la connexion ouverte.

+1

+ C'est l'une des choses qui me manquent aussi dans LINQ. Pertinent pour un environnement avec un réseau mal entretenu – Andomar

Répondre

1

Même s'il y avait un tel événement (pas sûr) vous ne pouviez toujours pas compter dessus. Une connexion réseau peut soudainement se briser, le moteur de base de données être occupé à faire une autre requête un délai d'attente est toujours une possibilité. Il vaut mieux regarder directement une requête si elle a réussi ou échoué, quelle que soit la raison.

0

Pourquoi obtenez-vous autant de gouttes? Êtes-vous accroché à un objet de contexte de données pendant une longue période? Il est bon marché d'en construire un, alors construisez-en un nouveau lorsque vous commencerez une nouvelle unité de travail.

De cette msdn blog

Il est préférable de pécher par excès de vie plus courte - une unité de travail ou même une demande unique pour les serveurs sans état sont bons modèles pour commencer.

+0

J'utilise Windows Azure SQL Server .. il tombe tout le temps .. –

1

Vous pouvez envisager writing your own LINQ provider (en utilisant une grande partie des fonctionnalités existantes) qui ajoute exactement cette fonctionnalité. Il se pourrait que cela soit moins de travail que de gérer l'exception à chaque fois.

Questions connexes