Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 09.02.14 11:55 
Hallo Leute,

ich möchte mit Linq Daten innerhalb einer Datenbank in eine Archiv-Tabelle kopieren.


ausblenden C#-Quelltext
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:
private void InsertResultValues(List<string> ids)
{
    using (SequencerEntities sequencerContext = new SequencerEntities(EntityConnectionString()))
    {
        foreach (string id in ids)
        {
            var t = from results in sequencerContext.ResultValues
                    where results.C_ID == id
                    select results;

            if (t.FirstOrDefault() != null)
            {
                foreach (var res in t)
                {
                    ResultValuesArchiv newVal = new ResultValuesArchiv()
                    {
                        C_ID = res.C_ID,
                        Element = res.Element,
                        Value = res.Value,
                        Unit = res.Unit
                    };
                    sequencerContext.ResultValuesArchiv.AddObject(newVal);
                    sequencerContext.SaveChanges();
                }
            }
        }
    }
}


Fehlermeldung: "Diesem Command ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss."

Hm, was bedeutet das im Detail? Verstehe ich nicht wirklich??

Könnte mir bitte jemand erklären was das bedeutet? Was mache ich hier falsch??

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 09.02.14 12:04 
Erledigt, SaveChanges() gehört hinter die Iteration.

_________________
Gruß
Christoph
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 09.02.14 12:07 
Hm, merkwürdig. Wenn es dieselbe Tabelle wäre, könnte ich das nachvollziehen, aber so ...

Hast Du mal versucht, fürs Schreiben einen separaten Kontext zu erstellen?

btw, ist es nicht sinnvoller, SaveChanges außerhalb der Schleife aufzurufen?



//edit: Mist, warum wurde ich nicht informiert, das hier eine Antwort kam? :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 09.02.14 14:32 
Also, irgendwie ist hier etwas merkwürdig. Jetzt bekomme ich eine UpdateExeption:

Die INSERT-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung 'FK_ResultValuesArchiv_ResultsArchiv'. Der Konflikt trat in der Sequencer-Datenbank, Tabelle 'dbo.ResultsArchiv', column 'C_ID' auf.

Scheinbar hat der Server ein Problem damit, das die PKs auf beiden Tabellen identisch sind. Hm, da muss ich heute Abend noch mal schauen was da los ist.....

_________________
Gruß
Christoph