Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
TableAdapterManager -> Update spezifische Tabelle
-Hades-
myCSharp.de - Member



Dabei seit:
Beiträge: 171
Herkunft: Deutschland NRW

Themenstarter:

TableAdapterManager -> Update spezifische Tabelle

beantworten | zitieren | melden

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-
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2.207
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
-Hades-
myCSharp.de - Member



Dabei seit:
Beiträge: 171
Herkunft: Deutschland NRW

Themenstarter:

beantworten | zitieren | melden

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-
private Nachricht | Beiträge des Benutzers
-Hades-
myCSharp.de - Member



Dabei seit:
Beiträge: 171
Herkunft: Deutschland NRW

Themenstarter:

beantworten | zitieren | melden

Habe es jetzt gelöst. Habe Reflection genutzt und muss dadurch keine Liste oder dergleichen aufbauen. Klappt perfekt und ist n 3-Zeiler ;)
private Nachricht | Beiträge des Benutzers