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

ASP.NET MVC Discussion :

[EF 4.1] Création d'une connectionString dynamiquement


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut [EF 4.1] Création d'une connectionString dynamiquement
    Bien le bonjour à tous

    Cela fait quelques jours maintenant que je reste bloqué sur un détail et mon ami Google ne m'a pas aidé à trouver la solution.
    Alors je m'adresse à vous, en espérant qu'un brillant esprit viendra éclairer ma lanterne

    Bien, je développe une application utilisant MVC 3 + Entity framework 4.1.
    J'arrive à récupérer ce dont j'ai besoin dans la base de données, la n'est pas le problème.
    Par contre, je dois accéder à différentes bases situées sur différents serveurs qui ne seront connus que lors du déroulement du programme, et là je bloque...

    Je m'explique:
    ( Ce qui suis est juste un exemple pour vous montrer à peu prés comment est l'environnement de mon coté )
    J'ai, par exemple, une classe produit avec les attributs suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string IdProduit { get;set;}
    public string NomProduit { get; set;}
    public string Serveur { get;set;}
    public string DataBase { get; set;}
    Je passe sur le mapping et autres, ce qui donne que je récupère les données à partir de ma base de données principale.
    J'aurai par exemple ceci comme données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IdProduit = "4587", NomProduit="Cuisine", Serveur ="NSFS45", DataBase="ProdCuisine"
    IdProduit = "5712", NomProduit="Salle de Bain", Serveur ="NSFS54", DataBase="ProdSDB"
    etc ...
    Admettons ensuite que les infos de ce/ces produits sont stockées sur un serveur et base différent. ( que je connais grâce aux champs Serveur et Database )
    J'aimerai récupérer les informations qui y sont stockés.

    Mon problème ? Comment j'y accède ?
    Sachant que les noms du serveur et de la base ne seront connus que durant l’exécution de mon programme, je ne peux pas écrire à l'avance ma connectionString dans le Web.config.

    Par exemple, j'ai celle ci pour ma classe Produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <connectionStrings>
        <add name="ProduitDbContext" connectionString="Data Source=NSFS01;Initial Catalog=Produit; User Id=SuperUsr;Password=SuperPwd;" providerName="System.Data.SqlClient" />
      </connectionStrings>
    Voila, j’espère avoir été assez clair, si besoin je peux ré-expliquer .

    J'ai vu que il y avait moyen de créer la connectionString en utilisant EntityConnectionStringBuilder mais dans mon cas cela ne fonctionne pas ( je ne passe pas par EDMX )

    Donc si une âme charitable passe dans le coin, je lui en remercie d'avance

    .:AO:.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah ça a l'air d'une chaine de connexion SQL Server normale... tu peux donc utiliser SqlConnectionStringBuilder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder();
        sqlcsb.DataSource = "NSFS01";
        sqlcsb.InitialCatalog = "Produit";
        sqlcsb.UserID = "SuperUsr";
        sqlcsb.Password = "SuperPwd";

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Salut tomlev et merci de ta réponse.

    Alors en effet, j'avais vu à plusieurs reprise l'utilisation de SqlConnectionStringBuilder. Cependant il était toujours accompagné d'un EntityConnectionStringBuilder comme l'exemple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
    sqlBuilder.MultipleActiveResultSets = true;
    sqlBuilder.DataSource = ".";
    sqlBuilder.InitialCatalog = "dpmr";
    sqlBuilder.IntegratedSecurity = true;
     
    EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
    entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
    entityBuilder.Metadata = "res://*/";
    entityBuilder.Provider = "System.Data.SqlClient";
    Mais je n'ai pas essayé juste en utilisant le SqlBuilder.
    Je vais essayer et je te tiens au courant.

    .:AO:.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Effectivement je me connecte à la base de données. Le problème c'est que derrière je dois effectuer une requête sql comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         SqlConnectionStringBuilder sqlcsb = new SqlConnectionStringBuilder();
         sqlcsb.DataSource = "NSFS01";
         sqlcsb.InitialCatalog = "Produit";
         sqlcsb.IntegratedSecurity = true;
     
         SqlConnection cn = new SqlConnection();
         cn.ConnectionString = sqlcsb.ConnectionString;
         cn.Open();
     
         string strSQL = "SELECT description FROM Design WHERE id_sdb=440038";
         SqlCommand myCommand = new SqlCommand(strSQL, cn);
    mais je ne veux pas le faire de cette manière, mais plutôt passer par une classe ( vu que j'utilise entity framework ) avec Dbset et DbContext.

    Je vais voir ça.
    Merci encore.

    .:AO:.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    DbContext a un constructeur qui prend en paramètre une DbConnection existante, donc tu n'as qu'à utiliser ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    using(var context = new MyDbContext(cn))
    {
        string description = null;
        Design dsgn = context.Design.Find(440038);
        if (dsgn != null)
            description = dsgn.Description;
    }

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Ah oui en effet, j'avais oublié.
    Je vais tester cela et je tiens au courant.

    Merci encore à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création d'une liste dynamique aspx/vb
    Par akara dans le forum ASP.NET
    Réponses: 1
    Dernier message: 27/09/2007, 07h39
  2. <débutant> création d'une liste dynamique (aspx/vb)
    Par akara dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 11/09/2007, 15h46
  3. Création d'une bibiothèque dynamique.
    Par Pragmateek dans le forum C++
    Réponses: 22
    Dernier message: 31/03/2006, 22h00
  4. création d'une librairie dynamique
    Par bilo2000 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 26/08/2004, 15h17
  5. [Plugin] Création d'une vue dynamiquement
    Par The Bonze dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 15/06/2004, 13h23

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