none
Linq Communiquer 2 bases RRS feed

  • Question

  • Merci pour votre reponse;

    je pose plus clairement mon probleme:

    Problematique: a partir de bases locales  je dois mettre à jour un serveur (des donnees sont reccueillies sur le terrain puis centralisees)

    //Context vers base serveur
    DataContext

     

    dbResau = new DataContext(@"Data Source=...........");

    //Context base locale
    DataClassesSuEnDataContext dbLocal = new DataClassesSuEnDataContext
    ();

    //je recupere la table ENREGISTREMENT du serveur qui doit etre mis à jour
    Table<TB_ENREGISTREMENT> ENREGISTREMENT = db.GetTable<TB_ENREGISTREMENT>();

    //A ce niveau je regarde les mises a jour a faire

    var MesMAJ= from p in (from t in ENREGISTREMENT select t).Intersect(
     from t in dbLocal.TB_ENREGISTREMENT select t) select p

    //Une exploitation de MesMAJ me retourne une erreur me disant que j'utilise des context differents

    //je souhaite contourner le pb en stockant mes resultas dans des tableaux

    Pouvez vous me suggerer une solution optimale

    Merci pour vos reponses

    • Déplacé Alex Petrescu vendredi 2 juillet 2010 11:25 (Origine :Visual C#)
    jeudi 1 juillet 2010 13:12

Réponses

  • Bonjour,

    Vous ne pouvez pas faire de requête Linq To SQL entre deux contexte différents (= deux bases différentes). En revanche vous pouvez effectuer votre intersection via Linq To Object (c'est à dire l'intersection de tableaux d'objets). Attention, cela signifie que vos deux tables seront entièrement téléchargées, et mises dans deux tableaux :

    var MesMAJ= from p in (from t in ENREGISTREMENT select t).ToArray().Intersect(
     (from t in dbLocal.TB_ENREGISTREMENT select t).ToArray()) select p

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse Alex Petrescu mardi 6 juillet 2010 08:31
    jeudi 1 juillet 2010 21:20
    Modérateur

Toutes les réponses

  • Est il possible de stocker le resultat d'une requete LINQ dans un tableau

    mercredi 30 juin 2010 22:39
  • Bonjour,

    Utilisez la méthode d'extension ToArray() tout simplement :

    MonObjet[] objets;
    
    objets = (from o in sourceObjets select o).ToArray();

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Proposé comme réponse nikho jeudi 1 juillet 2010 09:23
    jeudi 1 juillet 2010 04:55
    Modérateur
  • Merci pour votre reponse;

    je pose plus clairement mon probleme:

    Problematique: a partir de bases locales  je dois mettre à jour un serveur (des donnees sont reccueillies sur le terrain puis centralisees)

    //Context vers base serveur
    DataContext

     

    dbResau = new DataContext(@"Data Source=...........");

    //Context base locale
    DataClassesSuEnDataContext dbLocal = new DataClassesSuEnDataContext();

    //je recupere la table ENREGISTREMENT du serveur qui doit etre mis à jour
    Table<TB_ENREGISTREMENT> ENREGISTREMENT = db.GetTable<TB_ENREGISTREMENT>();

    //A ce niveau je regarde les mises a jour a faire

    var MesMAJ= from p in (from t in ENREGISTREMENT select t).Intersect(
     from t in dbLocal.TB_ENREGISTREMENT select t) select p

    //Une exploitation de MesMAJ me retourne une erreur me disant que j'utilise des context differents

    //je souhaite contourner le pb en stockant mes resultas dans des tableaux

    Pouvez vous me suggerer une solution optimale

    Merci pour vos reponses

    jeudi 1 juillet 2010 10:23
  • Bonjour,

    Vous ne pouvez pas faire de requête Linq To SQL entre deux contexte différents (= deux bases différentes). En revanche vous pouvez effectuer votre intersection via Linq To Object (c'est à dire l'intersection de tableaux d'objets). Attention, cela signifie que vos deux tables seront entièrement téléchargées, et mises dans deux tableaux :

    var MesMAJ= from p in (from t in ENREGISTREMENT select t).ToArray().Intersect(
     (from t in dbLocal.TB_ENREGISTREMENT select t).ToArray()) select p

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse Alex Petrescu mardi 6 juillet 2010 08:31
    jeudi 1 juillet 2010 21:20
    Modérateur
  • Bonjour,

    Pour info il existe aussi un Sync Framework :
    http://msdn.microsoft.com/fr-fr/library/bb726002.aspx

    Je n'en sais guère plus et c'est peut-être un peu excessif pour votre besoin mais sait on jamais...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 3 juillet 2010 18:15