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 :

Travailler sur SQL Server en connecté, sur sql compact en nomade


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut Travailler sur SQL Server en connecté, sur sql compact en nomade
    Bonjour,

    Dans ma solution vb2010 Framework.net 4, j'ai un projet prjTraitement qui s'appuie sur un second projet prjDonnees pour l'accès aux données via EF.
    Pour des raisons de mobilité je crée une base sql compact (fichier .sdf) grâce à une réplication/fusion de sql serveur sur le poste client. Je ne souhaite pas installer sql express sur les postes clients. Ma base .sdf est identique à la base sql serveur. Si je branche à la main mon projet prjTraitement sur la base sdf (je supprime l'emdx et la connection string dans l'appConfig et je crée un nouveau emdx lié au fichier sdf) tout fonctionne .
    =>> Mon souci est que je ne sais pas comment, à la demande lors du lancement de l'application, brancher mon prjTraitement soit sur le serveur sql, soit sur le fichier .sdf.
    Quelqu'un a-t-il une piste?
    Merci, merci...

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    En premier lieu, je tiens à préciser que tu travailles sur SQL Server ou SQL compact tu travailles en mode déconnecté.

    Ensuite sachant que le jeux d'instructions prises en charge par SQL Server et SQL compact ne sont pas identiques (bien que je suppose que ce qui est compris pas SQL compact devrait être compris par SQL server). Par conséquence, tu risques au pire des incompabilités au niveau des instructions et au mieux une perte de fonctionnalités (au niveau base de donnée) avec une application qui se connectera à choix sur les 2 systèmes.

    C'est pourquoi dans l'idéal on implémente une application "mobile - Frontoffice" et une application "Fixe - Backoffice". Sachant que les fonctionnalités demandées sont, la plupart du temps, aussi différentes !

    Lors de la suppression/création d'un .edmx il y a une génération de code "transparent" par VisualStudio ce qui signifie qu'une simple modification d'une chaîne de connexion ne garanti pas le bon fonctionnement de la bidouille.

    Si je n'ai toujours pas réussi à te convaincre d'abandonner cette mauvaise idée, je te conseille alors la lecture suivante pour essayer de trouver une solution à ton problème.

    http://msdn.microsoft.com/en-us/library/cc716756.aspx

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Bonjour et merci,

    Lorsque je dis déconnecté, je veux dire déconnecté du réseau de l'entreprise et donc n'ayant pas d'accès au serveur SQL.

    Si quelqu'un veut s'amuser à faire la même chose que moi voici où j'en suis:
    A ce jour, j'ai créé 2 projets supplémentaires dans la solution. Un projet prjSQL dans lequel j'ai ajouté le .emdx (SqlEntities) correspondant au serveur SQL et un projet prjSDF avec l'edmx (SdfEntities) correspondant au fichier sdf.
    - projet principal : il faut mettre dans l'app.config les 2 connectionStrings (en copier/coller).
    - il ne faut surtout pas que les fichiers .edmx aient le même nom, par défaut on a tendance à laisser Model1.edmx.

    Dans l'en-tête des forms, je fais un import de l'un ou l'autre des projets de données et je change la d éfinition du context, le fonctionnement est identique.
    Je n'ai pas réussi à faire sélectionner au démarrage de l'application la base sur laquelle l'utilisateur souhaite travailler. En cela il faudrait que j'ai un code qui :
    - dans la partie "imports" me permette de choisir soit prjSQL, soit prjSDF (avec un #IF approprié ?)
    - dans le code me permette de définir le context qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim aContext as new SQLEntities
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim aContext as new SDFEntities
    Mais là encore comme je suis en variables globales et il me faudrait le #IF qui va bien.

    J'ai pensé à une autre solution qui est de créer une classe qui me renvoie une entité mais je ne m'en suis pas sorti non plus.
    ----------- ET JE SUIS BLOQUE...
    Bref, je vais créer une application "spéciale" pour les utilisations hors réseau et faire des copier/coller à chaque fois que je toucherai un écran, un état, ou tout autre élément...
    Soit je suis à côté de la plaque en ayant voulu faire ce que je voulais (une réplication "vraie" données + programme), soit mes connaissance ne me permettent pas de le faire...
    Mais je persiste à penser que ce que je souhaite est faisable et que je ne sais simplement pas l’architecturer à ce jour.

  4. #4
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Pour être sûr de comprendre ton besoin :

    - Tu veux que quand au démarrage, on n'arrive pas à se connecter au serveur SQL on bascule sur la base locale
    ou
    - Tu veux qu'on bascule à la base locale à chaque fois qu'on perd la connexion au serveur SQL, et qu'on re-bascule sur le serveur quand on retrouve le réseau

    Tu parlais de mobilité, donc si par exemple c'est une application pour Smartphone/Tablettes, la 2e option semble plus logique.
    Cependant : quelle est la valeur ajoutée à la base "centrale" dans ce cas ?

    Ne vaudrait-il pas mieux simplement mettre à jour les data de la base locale toutes les N minutes ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Mon besoin réel :
    l'utilisateur travaille sur la base centrale, environ 150 associations et, par exemple, il prépare un budget prévisionnel pour une association donnée. Il part présenter son budget en assemblée générale d'association et le modifie sur place en fonction des différentes remarques. En même temps il a accès à toutes les données et peut ajouter des membres, modifier leurs coordonnées etc. Il présente également les comptes comptables et bilans en fonction de ce qui a été saisi tout au long de l'année.

    En clair, il part chez le client avec la partie de base de données serveur correspondant à cette association, répliquée dans un fichier SDF. Quand il revient, toutes les modifications doivent être rappatriées sur le serveur central.

    Voilà.

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Ok.
    Dans ce cas, tu as une approche assez "simple".
    Ton utilisateur peut très facilement savoir quand il travaille en mode "déconnecté" (un peu comme Office), donc via un bouton, tu peux basculer sur ta base locale .SDF et travailler dessus.

    Quand l'utilisateur clique sur "reconnecter", il faut faire une mise à jour de la base centrale. A gérer la gestion de la fusion, mais a priori si tu gardes en mémoire (ou dans une table temporaire, plus sûr) les modifications à reporter, tu peux avoir quelque chose de simple.

    A ta place, je verrai donc ça comme deux bases différentes.

    Tu peux avoir quelques chose comme ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void UpdateData (MyData data) {
        if(isConnected) {
               using(SQLEntities context = new SQLEntities()) { ... }
        }
        else {
               using(SDFEntities context = new SDFEntities()) { ... }
        }
    }

    Tu peux même implémenter un pattern pour avoir quelque chose de plus propre..

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/05/2011, 23h24
  2. Réponses: 4
    Dernier message: 08/03/2010, 09h22
  3. Réponses: 1
    Dernier message: 29/11/2009, 11h51
  4. Sauvegarde SQL-Server 2000 pour restauration SQL-Server 2005
    Par Harny dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/10/2006, 11h06
  5. Migration SQL Server 6.5 vers SQL Server 2000
    Par Douglas dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/10/2005, 11h44

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