IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

NTiers, binding, ConnectionString => erreur sous VS2010


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut NTiers, binding, ConnectionString => erreur sous VS2010
    Bonjour à tous,

    Je rencontre actuellement un petit soucis. J'essaye de "binder" une liste d'objets sur ma listbox mais j'ai quelques difficultés.

    Quand je lance mon application ça fonctionne.
    Quand j'ai le designer dans VS 2010 ou Blend 3, j'ai une erreur

    Voici l'erreur en question:
    The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
    at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
    at System.Data.EntityClient.EntityConnection..ctor(String connectionString)
    at System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString)
    at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
    at Appli.Test.DAL.MyEntities..ctor() in D:\Users\***\Documents\Visual Studio 2010\Projects\Appli.Test\Appli.Test.DAL\MyModel.Designer.cs:line 26
    at Appli.Test.DAL.UserManager.GetListUser() in D:\Users\***\Documents\Visual Studio 2010\Projects\Appli.Test\Appli.Test.DAL\UserManager.cs:line 11
    at Appli.Test.BLL.Metier.GetListUser() in D:\Users\***\Documents\Visual Studio 2010\Projects\Appli.Test\Appli.Test.BLL\Metier.cs:line 11
    Je ne comprend pas comment ça peut ne pas marcher dans le viewer mais fonctionner quand je lance l'application.

    MainWindow.xaml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Window x:Class="Appli.Test.GUI.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:bll="clr-namespace:Appli.Test.BLL;assembly=Appli.Test.BLL"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <ObjectDataProvider x:Key="ProvListUser" ObjectType="{x:Type bll:Metier}" MethodName="GetListUser" />
        </Window.Resources>
     
        <Grid>
            <ListBox ItemsSource="{Binding}" DataContext="{Binding Source={StaticResource ProvListUser}}" DisplayMemberPath="Nom" />
        </Grid>
    </Window>


    Metier.cs
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using System.Collections.Generic;
    using Appli.Test.DAL;
    using Appli.Test.EL;
     
    namespace Appli.Test.BLL
    {
        public class Metier
        {
            public List<UserEntity> GetListUser()
            {
                return new UserManager().GetListUser();
            }
        }
    }

    UserManager.cs
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    using System.Collections.Generic;
    using System.Linq;
    using Appli.Test.EL;
     
    namespace Appli.Test.DAL
    {
        public class UserManager
        {
            public List<UserEntity> GetListUser()
            {
                MyEntities ContextEntity = new MyEntities();
                return ContextEntity.mon_test.Select(u => new UserEntity
                                                       {
                                                           Id = u.id_mon_test,
                                                           Nom = u.nom,
                                                           Prenom = u.prenom
                                                       }).ToList();
            }
        }
    }

    UserEntity.cs
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    namespace Appli.Test.EL
    {
        public class UserEntity
        {
            public int Id { get; set; }
            public string Nom { get; set; }
            public string Prenom { get; set; }
        }
    }

    J'ai bien le fichier App.config dans mon projet GUI, et je l'ai même rajouté dans DAL, mais rien n'y fait!


  2. #2
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Hello,

    Je pense qu'il manque la connections string dans le fichier de config de ton application main...

    Edit: En fait l'objectContext essaye de retrouver la connexion string dans le fichier de conf de l'application qui est VS au design time. Donc tu as deux solutions:
    1. Mettre la chaine de connexion dans machine.config (pas terrible),
    2. Wrraper l'objectContext dans un fournisseur de data qui détecte le design time et renvoit des données de test...


    Bon courage,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Merci pour ta réponse jimx90.

    Dans mon application main (GUI), WPF donc, j'ai un fichier nommé App.config contenant:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <connectionStrings>
        <add name="MyEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SQLite;provider connection string=&quot;data source=C:\mydatabase.db3&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>
    </configuration>

    1) Machine.config est différent de App.config?
    2) C'est un peu du chinois pour moi là
    Tu peux m'en dire un peu plus parce que je ne vois pas trop ce que tu veux que je fasse.

    PS: je précise bien que quand je lance l'appli, ça fonctionne, c'est juste au niveau du designer.

  4. #4
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Hello,

    App.config est un fichier de configuration pour ton application et machine.config est global à ton PC. Plus d'infos à son sujet la : http://msdn.microsoft.com/en-us/libr...(v=VS.90).aspx

    La chaine de connexion est cherchée dans le fichier de configuration de l'application qui charge ton user control: quand tu la lances, la chaine de connexion est trouvée dans ton fichier de configuration car elle y est bien donc ca marche. Dans le designer, la chaine de connexion est cherchée dans le fichier de configuration de Visual Studio car c'est lui qui affiche ton controle et elle n'y est pas et ca ne marche donc pas....

    À défaut de le trouver dans le app.config, la chaine de connexion est ensuite cherchée dans le fichier de configuration de ta machine: machine.config...

    Pour la deuxième solution... il est trop tard pour que je l'explique

    Bon courage,

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Bon je viens de tester le Machine.config.
    J'ai fait un copier/coller de App.config, mais sans succès (MSDN)

    J'ai vérifié dans bin/debug et j'ai bien App.config et Machine.config.
    Bref, si un de ces jours tu as le temps de m'expliquer la seconde méthode, je suis prenant.

    Bonne fin de soirée.

  6. #6
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Hello,

    Tu as fait un copier/coller de machine.config dans ton dossier debug?
    Ou tu as copier/coller les connections strings de App.config dans le fichier machine.config qui est a lemplacement indiqué dans le lien que j'ai donné précédemment ?

    Bon courage !

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par jmix90 Voir le message
    [*]Wrraper l'objectContext dans un fournisseur de data qui détecte le design time et renvoit des données de test...
    Je recommande cette solution

    Et de toutes façons, ObjectDataProvider, c'est pas le mieux si par la suite tu veux faire du MVVM

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par jmix90 Voir le message
    Wrapper l'objectContext dans un fournisseur de data qui détecte le design time et renvoit des données de test...
    Quelqu'un aurait il un lien ou une explication svp? Car je ne connais pas la signification de "Wrapper l'objectContext" et je ne sais encore moins ce qu'est le design time.

    Pas évident toutes ces notions de C#/WPF à assimiler!

  9. #9
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Le principe d'un wrapper est d'enrober un objet. L'idée sous jacente est de ne pas utiliser directement l'objet (ici ton objectContext) mais une abstraction de celui-ci(une interface). Avec une abstraction, tu ne sais pas comment le travail (te fournir des données) est réalisé mais tu sais ce qu'elle est capable de te faire: renvoyer des données.


    Aussi au moment du design(design time = dans l’éditeur de VS par exemple) il ne te renverra pas la même chose qu'au moment de l’exécution.
    Au design time il te renvoie des données de tests qui n'utilise pas ton objectContext car cela plante. Au moment de l’exécution il utilise l'objectCOntext.

    Voila avec cela tu as déjà beaucoup de mots-clefs pour aller de l'avant avec Google dans la compréhension de cette problématique !

    Voici quelques bons articles parlant de ce même sujet:


    Bon courage !

  10. #10
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Blop,

    Un autre très bon article en anglais sur lequel je viens de tomber : http://www.cookingwithxaml.com/conte.../blenddata.htm

    Bon courage,

  11. #11
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Z'etes sur qu'il est possible de se connecter à une base de données a design time? Je sais que les webservices sont désactivés par exemple.

  12. #12
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Blop,

    L'idée du wrapper, c'est justement de proposer des données au design Time si cela n'est pas possible :-p

Discussions similaires

  1. Erreur: entitycommandexecutionexception sous VS2010
    Par IsraGab dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 31/03/2011, 12h51
  2. Réponses: 2
    Dernier message: 13/12/2010, 12h14
  3. Erreur sous PHP MyAdmin (PMA database?)
    Par Matlight dans le forum Installation
    Réponses: 5
    Dernier message: 28/10/2010, 19h38
  4. Erreur incompréhensible sous VS2010
    Par raphchar dans le forum Visual C++
    Réponses: 1
    Dernier message: 19/05/2010, 21h17
  5. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo