Linq to sql: Durée de vie de l'objet de datacontext pour une appli winforms

testpresta Messages postés 13 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 26 janvier 2009 - 20 janv. 2009 à 22:10
testpresta Messages postés 13 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 26 janvier 2009 - 21 janv. 2009 à 12:20
Bonjour,

La question est dans le titre: Je me pose la question de savoir quelle doit être la durée de vie de l'objet MaBDDDataContext.
Ma question porte sur une appli winforms.

J'ai deux solutions extrêmes (il y a peut etre des variantes):

1. Créer une var globale (ou un singleton)
2. Instancier une nouvelle occurence dans chaque methode, en local (et laisser mourrir tout seul l'objet quand l'appel de la fct est fini)

D'avance grand merci pour vos commentaires à ce sujet

4 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
21 janv. 2009 à 09:24
Hello,

Tout dépend de l'application que tu veux développer, mais après avoir essayé les deux méthodes, et avoir lu certains articles (désolé, mais je n'arrive pas à les retrouver), je peux te dire qu'il vaut mieux avoir un DataContext local plutôt qu'un singleton.

Par contre, je ne sais pas ce que tu entends par laisser mourir l'objet, mais il vaut mieux faire un using.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
testpresta Messages postés 13 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 26 janvier 2009
21 janv. 2009 à 10:10
Je te remercie pour ta réponse.

Voici ce que j'entend par laisser mourrir l'objet: En haut d'une methode, je déclare un objet de type datacontext de ma bdd et je l'instancie.
Je l'utilise dans ma methode et derrière je ne fait rien pour détruire l'objet ou pour le refermer (c'est ça que j'appelle laisser mourrir l'objet).
Qu'entends tu par using ?

Merci
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
21 janv. 2009 à 10:52
Hello,

using(TonDataContext context = new TonDataContext())
{
   //Utilisation de ton context
}

En gros, ça revient à la même chose qu'un try/catch/fianlly, avec un Dispose du context dans le finally.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
testpresta Messages postés 13 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 26 janvier 2009
21 janv. 2009 à 12:20
je connaissais pas cette syntaxe a vrai dire.
C'est important de faire un Dispose à la fin ? ça sert a quoi précisement ?
Que se passe t il si je ne fait pas de disose ?

Le catch, je le récupere ou la dedans ?

Merci
0