Laden...

EF nach Hinzufügen neuer Objekte aktualisieren

Erstellt von Tris vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.371 Views
T
Tris Themenstarter:in
18 Beiträge seit 2009
vor 14 Jahren
EF nach Hinzufügen neuer Objekte aktualisieren

verwendetes Datenbanksystem: MS SQL Server 2008 (Express)

Hallo zusammen,

ich schreibe im Moment an einem kleinen Testprogramm in C# / spiele mit dem Entity Framework unter Visual Studio 2008 herum.

Folgendes Problem: Das Testprogramm bietet praktisch eine GUI zur Eingabe von Personendaten, die dann in die DB vom SQL Server gespeichert werden. Die Abfrage per LINQ klappt soweit gut. Füge ich allerding ein neues Personenobjekt der Entität "Personen" hinzu, würde ich dies auch gern im DataGrid anzeigen lassen. Nur leider aktualisiert da "irgendwo" etwas nicht...

Liegt es daran, dass ich das Objekt im der Codedatei direkt per "Context.AddToPersonen(...)" hinzufüge? Sollte (muss?) ich solche Aktionen, also bspw. das Hinzufügen, über eine Art Zwischenschicht erledigen und dafür alles neue Klassen schreiben, die die INotifyPropertyChanged - Schnittstelle implementieren (ich hoffe nicht)? Oder lest ihr in solchen Fällen einfach per LINQ die kompletten Datensätze neu aus der DB ein (wäre irgendwie auch etwas zuviel des Guten - vor allem, wenn es später mal ordentlich mehr werden)? Gibt's noch andere Lösungswege für das Problem des Nicht-Aktualisierens?

Gruß, Tris

5.299 Beiträge seit 2008
vor 14 Jahren

Ich adde beim Databinding Entitäten vorzugsweise per


myDingsbums = (Dingsbums)BindingSource.Addnew();

Zum einen weiß die BindingSource, wie das richtig zu adden ist, zum andern berücksichtigt sie auch die Relationen, in denen das Dingbums eingefügt sein soll.

Man kann einer Table<T> aber auch mit dieser hanebüchenen Extension eine Entity direkt adden:


namespace System.Data.Linq {
   public static class TableX {

      public static void Add<T>(this Table<T> subj, T Entry) where T : class {
         ((IList)((IListSource)subj).GetList()).Add(Entry);
      }
   }
}

Der frühe Apfel fängt den Wurm.

T
Tris Themenstarter:in
18 Beiträge seit 2009
vor 14 Jahren

Hallo ErfinderDesRades,
erstmal danke für die schnelle Antwort.

Musste leider feststellen, dass ich nicht geschrieben habe, dass mein Testprojekt ein WPF - Projekt ist. Wie würdest du es denn dort lösen (BindingSource's müssten dort ja dann direkt im Code erstellt werden)?

Habe derweil schonmal Google und die msdn Seiten befragt, werde da aber nicht fündig für mein Problem. Befürchte schon, dass ich grundlegend irgendwas falsch mache (gerade beim "Aktuell halten nach dem Einfügen von neuen Daten im EF" müsste es sonst doch schon diverse andere Aufschreie gegeben haben!?).

Gruß, Tris

5.299 Beiträge seit 2008
vor 14 Jahren

sorry, k.A..
WPF-Databinding funktioniert glaub ziemlich anders als WinForms.
Und der Hack mit der Extension - geht das nicht?

Der frühe Apfel fängt den Wurm.

T
Tris Themenstarter:in
18 Beiträge seit 2009
vor 14 Jahren

Hallo ErfinderDesRades,

Den Hack verstehe ich als "Newbie" leider noch nicht richtig. Ich wüsste nicht mal, wo genau der hin gehört 😦

Irgendwie scheint mir dieses Entity Framework noch viel zu wirr... Mir will nicht in den Kopf, dass so ein hoch entwickeltes Teil kein Ereignis/Meldung wirft, wenn ein neuer Datensatz darin eingefügt wird, damit Steuerelemente ihren Inhalt updaten können.

Werde wohl doch wieder zu WinForms (und den entsprechenden Datasets/BindingSources) zurück. Eine eigene Zwischenschicht zu schreiben, um beim EF zu bleiben, ist bei mir noch nicht drin.

Vielen Dank für deine Antworten...

Gruß, Tris