Partage
  • Partager sur Facebook
  • Partager sur Twitter

insérer une collection en base avec LINQTOSQL

    20 avril 2011 à 13:16:28

    Bonjour, je voudrais insérer une collection:
    TwitterResponse<TwitterStatusCollection> userTimeline = TwitterTimeline.UserTimeline(accessToken, options);
    


    C'est une liste de twits avec id et date.

    Je voudrais l'insérer en base de donnée, les champs des tables sont les même que ceux de la collection. J'ai aucune idée de comment m'y prendre.

    Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2011 à 14:24:53

      using(TonEntitySQL entities = new TonEntitySQL())
      {
          foreach(TwitterStatus stat in userTimeline)
          {
              SqlTwitterStatus localStat = new SqlTwitterStatus();
              //Mettre les codes de copie de propriété ici
              entities.SqlTwitterStatus.AddObject(localStat);
          }
          entities.SaveChanges();
      }
      


      -TonEntitySQL = Le nom de ta classe qui a été généré lors de l'ajout d'un modèle de données ADO.NET Entity.
      -SqlTwitterStatus = Le nom du modèle de données généré, en relation avec ta table SQL contenant les tweets. Dépendant de l'activation ou non de la suppression des pluriels automatique lors de la génération du modèle, il se peut que le nom de la classe ne comporte pas de "s" final.

      Edit : Je ne sais pas ce que tu appelle "LINQTOSQL". Dans le code que j'ai utilisé ici, il faudra faire du Linq-To-Entities. Ce doit être très proche de Linq-To-SQL, la différence sera, peut-être, que tout l'aspect modèle de données ne sera plus à ta charge.
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2011 à 17:34:13

        Citation : Nisnor

        Edit : Je ne sais pas ce que tu appelle "LINQTOSQL". Dans le code que j'ai utilisé ici, il faudra faire du Linq-To-Entities. Ce doit être très proche de Linq-To-SQL, la différence sera, peut-être, que tout l'aspect modèle de données ne sera plus à ta charge.


        LINQ To SQL est la techno qui a précédé Entity Framework, et qui a d'ailleurs été rendue obsolète par ce dernier en un temps record.
        Le principe est globalement le même, si ce n'est qu'Entity Framework est capable d'offrir un niveau d'abstraction très complexe autour de la BDD alors que Linq2SQL ne permet qu'un simple mapping classes-tables.

        La syntaxe est légèrement différente, donc le code d'insertion d'une collection sera plutôt du genre:

        using(TonObjectContext context = new TonObjectContext())
        {
            foreach(TwitterStatus stat in userTimeline)
            {
                SqlTwitterStatus localStat = new SqlTwitterStatus();
                //Mettre les codes de copie de propriété ici
                context.SqlTwitterStatus.InsertOnSubmit(localStat);
            }
            context.SubmitChanges();
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2011 à 18:59:59

          L'instruction foreach ne peut pas fonctionner sur des variables de type 'Twitterizer.TwitterResponse<Twitterizer.TwitterStatusCollection>', car  Twitterizer.TwitterResponse<Twitterizer.TwitterStatusCollection>' ne contient pas de définition public pour 'GetEnumerator'.
          


          Merci de votre aide, j'ai cette erreur sur le foreach.

          Vous entendez quoi par //Mettre les codes de copie de propriété ici ?

          Désolé de ces questions de débutant mais le C# est nouveau pour moi :/
          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2011 à 1:28:50

            Citation : Parmenion

            L'instruction foreach ne peut pas fonctionner sur des variables de type 'Twitterizer.TwitterResponse<Twitterizer.TwitterStatusCollection>', car Twitterizer.TwitterResponse<Twitterizer.TwitterStatusCollection>' ne contient pas de définition public pour 'GetEnumerator'.



            Remplace la boucle foreach par une boucle plus conventionnelle...Un while ou un for...

            Citation : Parmenion

            Vous entendez quoi par //Mettre les codes de copie de propriété ici ?


            Copier les propriétés correspondantes les unes dans les autres. Par exemple :
            localstat.Id = stat.Id;
            • Partager sur Facebook
            • Partager sur Twitter
              21 avril 2011 à 11:02:30

              Citation : Nisnor

              Citation : Parmenion

              L'instruction foreach ne peut pas fonctionner sur des variables de type 'Twitterizer.TwitterResponse<Twitterizer.TwitterStatusCollection>', car Twitterizer.TwitterResponse<Twitterizer.TwitterStatusCollection>' ne contient pas de définition public pour 'GetEnumerator'.



              Remplace la boucle foreach par une boucle plus conventionnelle...Un while ou un for...


              La collection de tweets est donnée par userTimeline.ResponseObject, pas par l'objet userTimeline lui-même:

              foreach(TwitterStatus stat in userTimeline.ResponseObject)
              {
                  // ...
              }
              
              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2011 à 18:00:49

                En effet le userTimeline.ResponseObject dans le foreach fonctionne.

                Par contre je n'ai pas compris ce qu'est le SqlTwitterStatus.
                Pour l'instant j'ai ça:
                TwitterResponse<TwitterStatusCollection> userTimeline = TwitterTimeline.UserTimeline(accessToken, options);
                
                        using (DataClassesDataContext db = new DataClassesDataContext())
                        {
                            foreach (TwitterStatus stat in userTimeline.ResponseObject)
                            {
                                SqlTwitterStatus localStat = new SqlTwitterStatus();
                                //Mettre les codes de copie de propriété ici
                                
                
                
                
                                db.InsertOnSubmit(localStat);
                            }
                            db.SubmitChanges();
                        }
                


                J'ai pas compris par quoi remplacer le SqlTwitterStatus, j'ai mon datacontext, ma liste de twitt... ?

                Désolé pour ces questions de noob mais merci encore pour votre aide!
                • Partager sur Facebook
                • Partager sur Twitter

                insérer une collection en base avec LINQTOSQL

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown