Typisiertes Dataset: Fremdschlüssel - Insert

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Typisiertes Dataset: Fremdschlüssel - Insert

    Hallo Leute,

    ich habe vor, mich in nächster Zeit mit typisierten Datasets und Datenbanken zu beschäftigen
    (Muss u.a. ein kleines Progrämmchen für die Firma schreiben, dass ich Datenbank-gestützt programmieren möchte.)

    Leider check ich allerdings die Fremdschlüssel-Technik (insbesondere Insert-Commands) nicht so wirklich.
    Zum Verständnis habe ich eine kleine Datenbank "Mitarbeiter" erzeugt, die die beiden Tabellen "Ort" und "Mitarbeiter" beinhalten.
    Beziehung 1:n, 1 Ort => n Mitarbeiter. Verbunden werden diese durch Ort.ID zu Mitarbeiter.OrtID

    Die TableAdapter dazu werden ja automatisch erzeugt, jedoch Tabellengetrennt => 1 Adapter "Ort", 1 Adapter "Mitarbeiter".
    Daher habe ich einen neuen Adapter erstellt, der mir die beiden Tabellen gejoind auflistet (Select Command).

    Da bei gejointen Datasets die Insert, Update und Delete Commands nicht automatisch erzeugt werden (ich habe bisher keinen Weg gefunden?) stellt sich mir folgende Frage:
    Erstellen Per zusätzlicher SQL Methode (bisher noch keine Dokumentation dazu gefunden..), programmgestützt durch if-Abzweigungen auf den einzelnen Tabellen oder reicht es sogar aus, die Orts-Spalte nur auf Unique zu setzen und einen insert auf beide Tabellen durchzuführen?

    Wäre sehr hilfreich, wenn Ihr ein Beispiel für mich hättet...


    Vielen Dank für Eure Informationen

    Gruß cemetry
    Bilder
    • Dataset.PNG

      16,96 kB, 503×471, 179 mal angesehen
    So einfach geht es nicht. Du mußt die Tabellen einzeln bearbeiten, d.h. kommen neue Arbeiter hinzu, suchst du als erstes den Ort (und dessen ID) und dann trägst du die Mitarbeiter neu ein - da du die OrtID schon hast, kannst die gleich mit ausfüllen.
    Jo - das ist die Überraschung: Beim Arbeiten mit typisiertem Dataset kann man den Sql-Join-Befehl schlicht vergessen.
    Das ist auch logisch, denn Joinen erzeugt eine "virtuelle" Tabelle, und natürlich kann die nirgends hin zurück-gespeichert werden.

    Die Ado-Denke hat da einen anneren Ansatz, der letztlich auch noch effizienter ist.
    gugge vier Views-Videos

    Also gejointe Views werden nicht als solche abgerufen, sondern die Tabellen bleiben getrennt, und das Joinen des Views findet gewissermaßen ganz zuletzt, im DatagridView statt.