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

Entity Framework Discussion :

Connexion dynamique à la BD


Sujet :

Entity Framework

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Connexion dynamique à la BD
    Bonjour ,

    J'essaie de me connecter dynamiquement àune base de donnée SQL Server avec Entity FrameWork.

    Lors de mes recherches j'ai cru comprendre qu'il fallait 'overrider' la fonction CreateObjectContext avec une ConnectionString dans le DomainService.

    Dois-je absolument ajouter un DomainService ?
    Je précise que je suis vraiment novice en la matière et voilà comment je procède:
    a) création nouveau silverlight application
    b) ajout d'un service WCF
    c) ajout d'une référence de service + mise à jour
    d) ajout du modèle (à partir d'une base de donnée)

    Un expert pourrait-il me donner les étapes pour mener à bien cette connexion dynamique à une BD SQL ?

    Voici le fonctionnement souhaité:
    1-L'usager choisit la base de donnée
    2-Construction de la connectionString (metadata, provider, nomBD etc...)
    3-Création d'une entité avec la connectionString (= new Entite(connectionString)
    4-Opérations avec cette entité

    C'est à l'étape 3 que je bloque. Merci de m'aider

    PS: Mon modèle est statique et correspond toujours à la structure de la BD. le but est donc de 'linker' la base de donnée au démarrage de l'application.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Regarde le EntityConnectionStringBuilder : http://msdn.microsoft.com/en-us/library/bb738533.aspx

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Merci Arnard. Je m'en vais de ce pas tester le code proposé.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Re-bonjour,

    Je suis de retour après avoir fait les tests et ça ne fonctionne...pas

    Je crée la connectionstring et j'obtiens un entityconnection conn, pourtant lors de l'exécution, je vois que l'attribut DataBase est vide alors que le serveur (DataSource) lui est bien présent.

    Je suppose que le problème est donc à ce niveau.
    Au niveau du serveur SQL, j'ai accès avec l'authentification Windows et lors du debogage, il arrive bien à ouvrir la connexion (Connection.State). voir p.j.

    voici mon code:

    Code : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public void SetBD()
            {
                // Specify the provider name, server and database.
                string providerName = "System.Data.SqlClient";
                string serverName = "PC\\SQLEXPRESS";
                string databaseName = "BaseDeTest";
     
                // Initialize the connection string builder for the
                // underlying provider.
                SqlConnectionStringBuilder sqlBuilder =
                    new SqlConnectionStringBuilder();
     
                // Set the properties for the data source.
                sqlBuilder.DataSource = serverName;
                sqlBuilder.InitialCatalog = databaseName;
                sqlBuilder.IntegratedSecurity = true;
                sqlBuilder.UserID = "MonUser";
                //sqlBuilder.Password = "MonPasseWord";
     
                // Build the SqlConnection connection string.
                string providerString = sqlBuilder.ToString();
     
                // Initialize the EntityConnectionStringBuilder.
                EntityConnectionStringBuilder entityBuilder =
                    new EntityConnectionStringBuilder();
     
                //Set the provider name.
                entityBuilder.Provider = providerName;
     
                // Set the provider-specific connection string.
                entityBuilder.ProviderConnectionString = providerString;
     
                // Set the Metadata location.
                entityBuilder.Metadata = @"res://*/Model1.csdl|
                                res://*/Model1.ssdl|
                                res://*/Model1.msl";
                //Console.WriteLine(entityBuilder.ToString());
     
                using (EntityConnection conn =
                new EntityConnection(entityBuilder.ToString()))
                {
                    conn.Open();
                    Console.WriteLine("Just testing the connection.");
                    TestEntities Momo = new TestEntities(conn);
                    Test Roger;
                    int n;
                    n = 0;
                    while (n < 2)
                    {
                        Roger = new Test();
                        Roger.CODE = "Momo";
                        Roger.Date = System.DateTime.Now;
                        Momo.Test.AddObject(Roger);
                        n++;
                    }
                    int changes = Momo.SaveChanges();
                    conn.Close();
                }
    Le SaveChanges ne fait donc absolument rien...

    merci de m'aider
    Images attachées Images attachées  

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    1. Database n'affichera pas forcément quelque chose, comme l'info est dans la connectionString

    2. TestEntities est bien ton objet context ?

    3.
    Roger.CODE = "Momo";
    Code est de type Unique ou PK ? ça expliquerait que ça marche alors pas (2 objets avec le même code) !

    4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Test Roger;
    int n;
    n = 0;
    while (n < 2)
    {
    Roger = new Test();
    Roger.CODE = "Momo";
    Roger.Date = System.DateTime.Now;
    Momo.Test.AddObject(Roger);
    n++;
    }
    Tu affectes différentes instances à la même référence, j'appréhende le résultat !

    revois les points 3 et 4, et on en reparle selon les résultats

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Merci de m'aider Arnard, c'est vraiment apprécié.

    Point 1: voici le contenu de la connectionstring

    "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=xxxxx\SQLEXPRESS;Initial Catalog=BaseDeTest;Integrated Security=True;User ID=xxxx;Connect Timeout=10"
    Point 2: Oui TestEntities est bien mon object context.

    Pour le point 3, je te rassure, ma table Test a une clé primaire qui est le CODE_INT et CODE n'est pas unique.

    Pour le point 4, j'ai changé la boucle pour mettre while (n <1), et cela ne change rien.

    Merci et bonne soirée
    Images attachées Images attachées  

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Bonjour

    Je suis contente car j'ai enfin trouvé mon problème qui résidait non pas dans l'accès à la base de données mais à celui à la table Test .

    Dans ma 2e BD, le schéma de cette table était différent de celui de mon modèle lié.

    C'est vraiment tout bête car j'ai quand même passé 2 jours là-dessus mais enfin, ça marche

    Merci mille fois Arnard pour ton aide qui m'a été précieuse. Passe un bon week-end

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

Discussions similaires

  1. [VB.Net 2.0/xsd] Comment passer une chaine de connexion dynamiquement ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 4
    Dernier message: 21/07/2006, 11h20
  2. Comment faire une connexion dynamique à une base avec ADO?
    Par Borisam dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2006, 14h22
  3. Connexion dynamique sur une base SQL Server
    Par jh0483 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/08/2005, 15h10
  4. connexion dynamique
    Par nah_wah dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2005, 14h00
  5. Réponses: 3
    Dernier message: 05/03/2003, 11h08

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