LinQ ti SQL : mehrere Datensätze gleichzeitig in die Tabelle speichern



  • Hallo,

    ich schreibe ein Programm, welches aus einer Datenbanktabelle Datensätze einliest, diese dann konvertiert und in eine andere Datenbanktabelle speichert. Jetzt möchte ich aber nicht nach jedem Datensatz diesen auch in die Datenbank speichern, sondern erst, nachdem alle konvertiert wurden, alle neuen Datensätze in die Tabelle speichern. So dass ich nur einen Datenbankzugriff habe. Ich habe schon einiges im Netz gefunden, allerdings unterscheidet es sich nicht so richig von meinen Codeteilen, funktioniert allerdings nicht wie gewünscht. Vielleicht habe ich einfach nur einen dicken Denkfehler bei der ganzen Sache. Jedenfalls würde ich mich freuen, wenn mir jemdand helfen könnte 🙂

    Hier mal die Code - Teile:

    DataClasses1DataContext context = new DataClasses1DataContext();
    Spotmessungen21 spot_q12 = new Spotmessungen21();
    Spotmessungen2 spot_q11 = new Spotmessungen2();
    KochMessung kochmessung = new KochMessung();
    
    Table<Spotmessungen2> cats11 = context.GetTable<Spotmessungen2>();
    Table<KochMessung> koch = context.GetTable<KochMessung>();
    var query = from cats in cats11
                select new { cats };
    
    foreach (var item in query) 
    {
        //Konvertierungen
        //zum Beispiel:
        kochmessung.Operator = "CATS";
    
        //zur Liste hinzufügen
        context.KochMessung.InsertOnSubmit(kochmessung);
    }//ende foreach
    
    //Datenbank aktualisieren
    context.SubmitChanges();
    

    Es wird allerdings nur der letzte durchlaufende Datensatz in der foreach - Schleife in die Datenbanktabelle gespeichert.
    Wahrscheinlich habe ich die ganzen Zusammenhänge noch nicht ausreichend gecheckt und bekomme es deswegen nicht hin 😞

    Schon mal Danke für eure Hilfe!



  • Fehlt beim DataClasses1DataContext eventuell noch das Disposing am Ende?
    Pack die Erstellung des context mal in einem using.



  • Also ich denke nicht, dass Disposing am Ende fehlt.

    Habe das ganze mal in ein using gepackt, was so aussieht :

    using (DataClasses1DataContext context = new DataClasses1DataContext())
    {
    DataClasses1DataContext context = new DataClasses1DataContext();
    Spotmessungen21 spot_q12 = new Spotmessungen21();
    Spotmessungen2 spot_q11 = new Spotmessungen2();
    KochMessung kochmessung = new KochMessung();
    
    Table<Spotmessungen2> cats11 = context.GetTable<Spotmessungen2>();
    Table<KochMessung> koch = context.GetTable<KochMessung>();
    var query = from cats in cats11
                select new { cats };
    
    foreach (var item in query) 
    {
        //Konvertierungen
        //zum Beispiel:
        kochmessung.Operator = "CATS";
    
        //zur Liste hinzufügen
        context.KochMessung.InsertOnSubmit(kochmessung);
    }//ende foreach
    
    //Datenbank aktualisieren
    context.SubmitChanges(); 
    }
    

    Allerdings bin ich mir nicht 100% sicher, ob das richtig ist, denn das habe ich bisher noch nicht gemacht. Aber es funktioniert auch nicht wie gewünscht. Es wird wieder nur der letzte durchgelaufene Datensatz in die Tabelle gespeichert.


Anmelden zum Antworten