![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| Bonjour, Lorsque je tente d'exécuter une instruction Linq pour lire une ligne d'une table SQL, j'obtiens le message d'erreur suivant à l'exécution de l'instruction "If LaRegle.Count < 1" : InvalidOperationException : Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé. Je ne comprends pas ce que ce message signifie. Voici mon code ci-dessous. Quelqu'un a-t-il une idée ? Merci d'avance, Gilbert. Private Function DeterminerRegleCautionBancaire(ByVal mntCautionBancaire As Decimal _ , ByVal durCautionBancaire As Integer) As Boolean DeterminerRegleCautionBancaire = False Dim ContexteRegle As New DoaReglesCautionBancaireDataContext(ObjSessionDive rs.OpenFinance) Dim LaRegle = From Regle In ContexteRegle.DoaReglesCautionBancaire _ Where ( _ (Regle.RebMntCautionBancaire >= mntCautionBancaire) _ And (regle.RebDurCautionBancaire >= durCautionBancaire) _ ) _ Order By Regle.RebMntCautionBancaire Ascending _ , Regle.RebDurCautionBancaire Ascending _ Take 1 If LaRegle.Count < 1 Then Alert.Show(String.Format(Msg018, "de la caution bancaire")) Exit Function End If NumRegleCautionBancaire = LaRegle.First.RebNumRegle LaRegle = Nothing ContexteRegle = Nothing DeterminerRegleCautionBancaire = True End Function |
| | ||||
| ||||
| |
| |||
| Bonjour, A priori on tente plusieurs lectures en même temps sur une même connexion. Dès la première exécution ? Qu'est ce que cela donne avec un ContexteRegle.Dispose (bien placé pour qu'il soit toujours exécuté) ? Cela n'a rien à voir mais les noms me paraissent un peu étranges (le nom du contexte est le même que le nom de la table exposée par ce contexte ?) -- Patrice "Gilbert Tordeur" <gilbert.tordeur***orange.fr> a écrit dans le message de groupe de discussion : uqf0YXQDJHA.1228***TK2MSFTNGP02.phx.gbl... > Bonjour, > > Lorsque je tente d'exécuter une instruction Linq pour lire une ligne d'une > table SQL, j'obtiens le message d'erreur suivant à l'exécution de > l'instruction "If LaRegle.Count < 1" : > InvalidOperationException : Un DataReader associé à cette commande est > déjà ouvert. Il doit d'abord être fermé. > > Je ne comprends pas ce que ce message signifie. Voici mon code ci-dessous. > Quelqu'un a-t-il une idée ? > > Merci d'avance, > Gilbert. > > Private Function DeterminerRegleCautionBancaire(ByVal mntCautionBancaire > As Decimal _ > , ByVal durCautionBancaire As Integer) As Boolean > DeterminerRegleCautionBancaire = False > Dim ContexteRegle As New > DoaReglesCautionBancaireDataContext(ObjSessionDive rs.OpenFinance) > Dim LaRegle = From Regle In ContexteRegle.DoaReglesCautionBancaire _ > Where ( _ > (Regle.RebMntCautionBancaire >= mntCautionBancaire) _ > And (regle.RebDurCautionBancaire >= durCautionBancaire) _ > ) _ > Order By Regle.RebMntCautionBancaire Ascending _ > , Regle.RebDurCautionBancaire Ascending _ > Take 1 > > If LaRegle.Count < 1 Then > Alert.Show(String.Format(Msg018, "de la caution bancaire")) > Exit Function > End If > > NumRegleCautionBancaire = LaRegle.First.RebNumRegle > LaRegle = Nothing > ContexteRegle = Nothing > DeterminerRegleCautionBancaire = True > End Function > |
| |||
| Merci Patrice, En fait, un DataReader était bien ouvert sur la même connexion. J'ai été induit en erreur par "associé à cette commande". En ce qui concerne les noms : le nom du contexte comporte le mot Contexte, le nom de la table ne le contient pas. Ils sont donc différents. Qu'est-ce qui te chiffonne ? Gilbert "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: C8B5023B-2146-4CE0-9DFE-18F703514D80***microsoft.com... > Bonjour, > > A priori on tente plusieurs lectures en même temps sur une même connexion. > > Dès la première exécution ? Qu'est ce que cela donne avec un > ContexteRegle.Dispose (bien placé pour qu'il soit toujours exécuté) ? > > Cela n'a rien à voir mais les noms me paraissent un peu étranges (le nom > du contexte est le même que le nom de la table exposée par ce contexte ?) > > -- > Patrice > > "Gilbert Tordeur" <gilbert.tordeur***orange.fr> a écrit dans le message de > groupe de discussion : uqf0YXQDJHA.1228***TK2MSFTNGP02.phx.gbl... >> Bonjour, >> >> Lorsque je tente d'exécuter une instruction Linq pour lire une ligne >> d'une table SQL, j'obtiens le message d'erreur suivant à l'exécution de >> l'instruction "If LaRegle.Count < 1" : >> InvalidOperationException : Un DataReader associé à cette commande est >> déjà ouvert. Il doit d'abord être fermé. >> >> Je ne comprends pas ce que ce message signifie. Voici mon code >> ci-dessous. Quelqu'un a-t-il une idée ? >> >> Merci d'avance, >> Gilbert. >> >> Private Function DeterminerRegleCautionBancaire(ByVal mntCautionBancaire >> As Decimal _ >> , ByVal durCautionBancaire As Integer) As Boolean >> DeterminerRegleCautionBancaire = False >> Dim ContexteRegle As New >> DoaReglesCautionBancaireDataContext(ObjSessionDive rs.OpenFinance) >> Dim LaRegle = From Regle In ContexteRegle.DoaReglesCautionBancaire _ >> Where ( _ >> (Regle.RebMntCautionBancaire >= mntCautionBancaire) _ >> And (regle.RebDurCautionBancaire >= durCautionBancaire) _ >> ) _ >> Order By Regle.RebMntCautionBancaire Ascending _ >> , Regle.RebDurCautionBancaire Ascending _ >> Take 1 >> >> If LaRegle.Count < 1 Then >> Alert.Show(String.Format(Msg018, "de la caution bancaire")) >> Exit Function >> End If >> >> NumRegleCautionBancaire = LaRegle.First.RebNumRegle >> LaRegle = Nothing >> ContexteRegle = Nothing >> DeterminerRegleCautionBancaire = True >> End Function >> > |
| |||
| > En ce qui concerne les noms : le nom du contexte comporte le mot Contexte, > le nom de la table ne le contient pas. Ils sont donc différents. Qu'est-ce > qui te chiffonne ? > Gilbert Si tu utilises les noms par défaut cela voudrait dire que le nom de la table présente dans ta base est le même que le nom de ta base. Ce n'est pas spécialement interdit mais plutôt inhabituel d'autant plus que le nom de contexte semble assez spécifique (je me serais attendu à qq chose de plus général style GestionFinancièreDataContext). Pour expliciter ma pensée je me demandais, si tu ne créais pas un contexte par Table plutôt qu'un contexte par Base. -- Patrice |
| |||
| Patrice, Oui je crée un contexte par Table plutôt qu'un contexte par Base. En fait ça fait 3-4 jours que je touche à Linq et je suis donc super débutant en ce domaine. Tu veux dire qu'il est préférable de créer un seul contexte par base, auquel se réfèreront toutes mes requêtes Linq ? Tu connais un bon tutoriel ? Gilbert "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: 0CC97065-2D85-4B70-B9F8-3F6883118146***microsoft.com... >> En ce qui concerne les noms : le nom du contexte comporte le mot >> Contexte, le nom de la table ne le contient pas. Ils sont donc >> différents. Qu'est-ce qui te chiffonne ? >> Gilbert > > Si tu utilises les noms par défaut cela voudrait dire que le nom de la > table présente dans ta base est le même que le nom de ta base. Ce n'est > pas spécialement interdit mais plutôt inhabituel d'autant plus que le nom > de contexte semble assez spécifique (je me serais attendu à qq chose de > plus général style GestionFinancièreDataContext). > > Pour expliciter ma pensée je me demandais, si tu ne créais pas un contexte > par Table plutôt qu'un contexte par Base. > > -- > Patrice > |
| |
| |
![]() |
| Tags: derreur, linq, message, sql |
| Outils de la discussion | |
| Modes d'affichage | |
| |