Entity Framework und DatagridView

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Entity Framework und DatagridView

    Hallo,

    ich verwende EntityFramework 6

    Ich möchte gerne Daten in ein DVG laden und dort Daten hinzufügen, bearbeiten und löschen können.
    Dazu habe ich folgendes Snippet im Internet gefunden. Die Daten werden zwar geladen, aber wenn ich den "Speichern-Button" klicke, dann passiert
    garnichts - also keine Daten werden in der Datenbank gespeichert.

    Außerdem würde es mich interessieren, wie ich die Columns bearbeiten kann - Also ich lade die Daten mit

    C#-Quellcode

    1. supliersDG.DataSource = db.Supliers.Local.ToBindingList();


    In das DGV, dann werden alle Spalten als Columns im DGV angezeigt - wie kann ich aber z.B. eine bestimmte Spalte entfernen oder auch
    eine Spalte manuell hinzufügen die dann z.B. Name heißt und Vorname + Nachname aus der DB in einen String zusammen enthält?

    C#-Quellcode

    1. DataContext db = new DataContext();
    2. public SupliersForm()
    3. {
    4. InitializeComponent();
    5. supliersDG.DataSource = db.Supliers.Local.ToBindingList();
    6. db.Supliers.Load();
    7. }
    8. private void SaveBtn_Click(object sender, EventArgs e)
    9. {
    10. supliersDG.EndEdit();
    11. db.SaveChanges();
    12. }
    Hey, zu "manuell hinzufügen" gibt's ne Menge bei Google.
    Bitte benutze OPTION STRICT ON.
    Und optional OPTION EXPLICIT ON.
    Hier ein CODE-CONVERTER.

    Suchanfragen-Ansatz für GOOGLE.
    Prüfe deinen Beitrag in einer RECHTSCHREIBPRÜFUNG.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemException“ ()

    Hallo

    Winforms ist nicht meine Welt, aber....

    Zeile 7 und 8 würde ich vertauschen. Habs nicht getestet, denke mir aber das hier der Fehler liegt.

    Und bitte, bitte , bitte. SaveChanges gibt dir einen Integer zurück welcher dir zeigt wieviele Datensätze geändert/gelöscht bzw. neu erstellt wurden.
    Warum wertest du das nicht aus? So siehst du auf den ersten Blick ob auch tatsächlich etwas gespeichert wurde. Ausserdem gibt es noch das Property HasChanges im ChangeTracker.

    Edit: Ich kann dir folgendes nur ans Herz legen wenn du mehr mit Ef machen willst.
    amazon.de/Moderne-Datenzugriff…fRID=3MN9HHQZNXB32BC5983V

    Habe ich selbst gelesen und viel daraus gelernt, vorallem konnte ich dadurch SEHR viel performance rausholen, denn die Abfragen die du hier machst. (db.Supplier.ToList()) sind sehr suboptimal.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Danke, ihr habt mir super weitergeholfen!
    Eine kleine Frage noch, dann ist mein Problem gelöst.

    In meinem Model hab ich ein Property als String ausgezeichnet, ich möchte den Benutzer aber eine Liste mit einer Auswahl zur verfügung stellen.
    Daher wird ins Datagrid eine TextboxCell geladen, ich würde aber stattdessen gerne eine ComboBox laden mit eben dieser auswahl.

    Diese Auswahl steht in keiner Datenbank sondern ist hardcoded in einer List<string>.

    Müsste also eine Column die ja automatisch mit

    C#-Quellcode

    1. shortcodeDataGrid.DataSource = db.Shortcodes.Local.ToBindingList();


    generiert wird mit einer ComboBoxCell austauschen... die auswahl sollte dann als string in das feld geschrieben werden.
    Hallo

    Das geht ja quasi schon einher mit dem Problem von oben das du "eigene" Spalten haben möchtest wo zwei Eigenschaften der Klasse zusammengefasst werden.

    Hierfür müsstest du dir eine eigene Klasse machen und diese befüllen.
    Also z.b. eine List(Of SupplierViewClass)

    Natürlich musst du die Änderungen dann auch entweder manuell in den Context zurückführen oder du hast Properties mit Getter und Setter wo du automatisch dann in dein Model-Object zurückführst.
    Aber ganz genau kann ich es dir als Winforms-Lösung leider nicht zeigen, dafür sind meine WinForms Kenntnisse mitlerweile leider zu gering.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##