Autor Beitrag
jonesdeliver
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 17.05.13 15:19 
Nochmals Moin

Vielleicht weiß jemand einen Rat.Vorab der Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        public static void Speichern(List<tbl_Eintraege> _liste)
        {
            try
            {
                foreach (var _stati in _liste)
                {
                    if (_stati.EntityState == System.Data.EntityState.Modified)
                    {
                        db.AddTotbl_Eintraege(_stati);  
                    }
                }
                db.SaveChanges();
            }
            catch (Exception ex){}

Das Problem: in der DB werden keine Änderungen vorgenommen. Es scheint an der Überladung zu liegen, die aus einem aus der DB geladenen, aber im Verlauf der Bearbeitung veränderten Objekt besteht. Jedenfalls klappt das Speichern sonst immer prima, aber da sind die Objekte auch nicht geändert.
Sofern ich EntityState.Detached ausführe, will das Model einen doppelten Schlüssel ablegen, was es natürlich hinhaut.
Wo ist hier der Fehler???
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Fr 24.05.13 19:01 
willst du änderungen an einem Objekt machen das bereits besteht in der DB ?

verstehe ich das richtig ? dann wird es so glaube ich kaum funktionieren.
jonesdeliver Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 27.05.13 17:41 
Nein, also grundsätzlich ist die Frage, wie ich den Inhalt eines DataGrids in die Tabelle zurückspeichern kann.

Das funktioniert nämlich soweit gut, nur seit ich ein DG mit einem Linq-Join aus mehreren Tabellen fülle, scheint es als könne nicht einfach mehr der Inhalt des DGs zurück gespeichert werden wie sonst üblich und möglich???
Stehe hier vollständig auf dem Schlauch.

Nach obiger SpeicherMethode kann ich weder eine Liste noch ein Objekt erfolgreich an die DB zurückgeben, selbst dann nicht, wenn das Objekt nur aus Werten besteht, die die Datenbank 100%ig kennen müßte.

Oder anders formuliert:
Wie verteile ich die Werte des DGs wieder zurück an die Tabellen, aus denen sie stammen?
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Mo 27.05.13 18:11 
Wenn du per Linq eine Abfrage macht aus mehreren Tabellen erstellst du dir ein neues Objekt(Liste) ?

Wenn ja hat das EntityFramework den Context verloren, Sprich du müsstest manuell die Datensätze löschen in der DB und danach die aktuellen einfügen....

Ich empfehle dir aber direkt mit dem Contextobjekt zu arbeiten ( Binding an das DG ), dann kannst du das Datagrid bearbeiten Wie du willst und danach nur die Methode SaveChanges() aufrufen.

stackoverflow.com/qu...datagridview-c-sharp

Das sollte dir helfen
jonesdeliver Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 28.05.13 18:16 
Danke für den Hinweis, das klappt soweit vielleicht ganz gut, wenn mir die Maschine nicht plötzlich melden würde, ich hätte keine Definition für EntityState ???
Es ist echt immer wieder dasselbe: ich weiß was der Eimer machen soll, aber er versteht mich einfach nicht.
daeve
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 116
Erhaltene Danke: 3

Windows (XP Pro, 7 Ultimate x64)
C#,WPF,Java,ASP.Net, VS 2010 Ultimate (x86)
BeitragVerfasst: Di 28.05.13 18:22 
ja also so sollte es schon funktionieren, mit deiner fehlermeldung kann ich so nicht viel anfangen.
Aber google das doch mal...sollte nicht so schwierig sein ;)

sonst bitte genauen fehlerbeschrieb mit code....