Ich verwende eine BindingList, um eine Liste von Person-Objekten in einem DataGridView in einer Windows Forms-Anwendung anzuzeigen. Änderungen an der DataGridView ändern die zugrunde liegende BindingList. Ich habe diesen Teil funktioniert.C#: Push-Änderungen von DataGridView in BindingList zurück zur Datenbank?
Jetzt möchte ich die Liste in einer Datenbanktabelle beibehalten. Das Lesen der Liste aus der Datenbank und das Auffüllen der Personenliste ist unkompliziert, aber wenn ich eine Person aus dem DataGridView hinzufüge/bearbeite/lösche, wie und wann behalte ich diese Änderung in der Datenbank zurück?
(Zum anderen ist dieser Ansatz in Ordnung, oder bin ich etwas größere Bild fehlt? Ich will nicht, Datentabellen verwenden, da ich mit meinem Code in einer abstrahierten objektorientierte Art und Weise arbeiten möchten.)
Lustig, ich habe Linq2Sql in ASP.NET verwendet, aber die Verwendung hier völlig entkam mir. Danke, dass du das unterstrichen hast! Dies könnte die Art sein, auf die ich mich entscheide, obwohl ich immer noch neugierig bin, wie ich es ohne linq2sql machen kann. – User
Dann sollten Sie wahrscheinlich INotifyPropertyChanged für Ihre Objekte selbst implementieren, die geänderten Eigenschaften verfolgen (und eine Liste neuer und gelöschter Objekte verwalten) und die Logik des Sammelns von Daten rückgängig machen, um INSERT-, UPDATE- und DELETE-Anweisungen gemäß Ihren Anweisungen aufrufen zu können Änderungen. Bei einigen dieser Aufgaben können Reflektion und Attributierung nützlich sein, sodass Sie Objekte speichern können, ohne selbst eine Abfrage zu erstellen, sondern stattdessen automatisch Abfragen generieren. Aber warum möchten Sie das Rad neu implementieren? – too
Guter Punkt. Ein praktischer Grund, den ich gerade entdeckt habe, ist, dass ich glaube, dass der Linq to SQL Designer nicht von einer SQL Server Datenbank unterstützt wird, da ich Visual Studio 2010 Express verwende. – User