Laden...

TableAdapterManager -> Update spezifische Tabelle

Erstellt von -Hades- vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.808 Views
-
-Hades- Themenstarter:in
171 Beiträge seit 2007
vor 10 Jahren
TableAdapterManager -> Update spezifische Tabelle

verwendetes Datenbanksystem: MySQL

Hallo,

ich benutze typisierte Datasets und habe mittlerweile sehr viele Tabellen.
Ich würde gerne eine Methode schreiben, mit der ich lediglich den Namen einer Tabelle oder die DataTable angebe und der passende TableAdapter ruft Update() für diese Tabelle auf.

Das Problem ist, das der TableAdapterManager keine Liste der einzelnen TableAdapter hält, sondern alle Adapter als Properties beinhaltet, ich kann also nicht ohne weiteres durch alle iterieren um dne richtigen zu finden. Des Weiteren ist in den TableAdapter-Instanzen nicht der zugehörige Tabellenname gespeichert oder dergleichen. Lediglich der Name des TableAdapter selber könnte geparst werden um so zu checken ob er zum Tabellennamen passt.
Das erscheint mir allerdings nicht als die beste Lösung.
Ein UpdateAll() kommt für mich nicht immer in Frage da dadurch an einigen Stellen im Programm Probleme auftreten.

Ich hoffe jemand hat eine elegante Lösung für dieses Problem, da das wirklich sehr nützlich wäre. Meine Commit-Methode zeigt beispielsweise eine Art Busy-Screen an und friert die GUI ein und es wäre extrem ärgerlich wenn ich die Methoden immer einzeln aufrufen muss, nur weil es keine gescheite Möglichkeit gibt den TableAdapterManager zu veranlassen die Änderungen einer spezifischen Tabelle in die DB zu schreiben.

So ist es bis jetzt:

TableAdapterManager.TableAdapter.Update(dataset.DataTable)

Ich möchte:

TableAdapterManager.Update(dataset.DataTable)

oder

TableAdapterManager.Update("tableName")

Gruß
-Hades-

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo -Hades-,

was hindert dich daran dir einen Service zu schreiben, der dir eine Liste der DataSets hält. Dann rufst du Update(tableName) auf und suchst dir aus der Liste den passenden Eintrag und rufst dort wiederum Update auf.

Gruss

Coffeebean

-
-Hades- Themenstarter:in
171 Beiträge seit 2007
vor 10 Jahren

Hallo Coffeebean,

daran hatte ich auch gedacht. Du meinst anstatt Dataset bestimmt TableAdapter?

Das heißt ich würde eine partial class für den TableAdapterManager anlegen und darin manuell eine Liste der TableAdapter anlegen und diese dann durchiterieren und dessen Namen parsen.
Dabei gibt es nun mehrere Probleme. Erstens ist es aufwendig die Liste überhaupt erst zu erstellen, da das bei ca. einhundert Tabellen aufwendig ist und manuell immer geupdated werden müsste. Des Weiteren ist die Oberklasse der TableAdapter Component, welche keine Update-Methode bereitstellen. Das müsste also irgendwie durch eine Abfrage ob es ein Update() gibt und dessen Aufruf umgangen werden. Und ich prüfe mit Sicherheit nicht mit

if (TableAdapter is TableAdapterForTableX)

jeden einzelnen durch.

Falls ich dich falsch verstanden habe und du meintest doch was anderes so schreib bitte noch einmal zurück. Ich möchte allerdings schon die Insert-, Update- und Delete-Commands der erzeugten TableAdapter nutzen.

Gruß
-Hades-

-
-Hades- Themenstarter:in
171 Beiträge seit 2007
vor 10 Jahren

Habe es jetzt gelöst. Habe Reflection genutzt und muss dadurch keine Liste oder dergleichen aufbauen. Klappt perfekt und ist n 3-Zeiler 😉