Benutzer mit den meisten Antworten
1:n Beziehung Relatete Table

Frage
-
Hallo !
Ich habe 3 Tabellen Kunden, Kunden_Telefonnummer, Telefonnumer
Kunden:
KundenID = Primärschlüssel Int
Name .. varchar(50)
Ort ... varchar(50)
Kunden_Telefonnummer:
KundenID = Primärschlüssel Int
TelefonID = Fremdschlüssel Int
Telefonnumer:
TelefonID = Primärschlüssel Int
Telefonnummer varchar(15)
So, ich soll auf eine Form die Kunden_Namen, den Ort und darunter die 1:n Telefonnnumern anzeigen.
Also brauche ich in der DatenQuelle Ansicht direkt unter der Tabelle Kunden (aber noch in der Tabelle) die Telefonnummern !!!
Ich hab das in meiner Ausbildung vor einem Jahr gelernt und hab das damals auch sicher 10-15 mal gemacht.
Aber ich bekomm das jetzt nicht mehr hin.
Mein Problem ist ich brauch ein DataSet in dem ich eine KundenTable bekomme an der unten die Table Telefonnummer angehängt ist, so daß ich Sie als related auf das Formular setzen kann.
Man muß irgendwo unten bei den Tableadapter, Bindingsource oder so irgendwas umstellen.
Hab auch schon die Videos von Bath Massi die das behandeln durch gesehen, darin beschreibt Sie alles schön bloß nicht wie man zu dem realtetem Table kommt .... gr, da verwendet sie schon fertig relatede Tables . Sitz schon 2 Tage an dem und komm nicht weiter.
Das sollte eigentlich alles nur ein Sache von paar Minuten sein, wenn man weiß wies geht .... !!!
Danke für hilfe.
Antworten
-
Hallo Werner,
wenn Deine Datenbank so erstellt wurde, dass Verknüpfungen (Relationen) bereits dort definiert wurden (das geht zum Beispiel auch durch die Erstellung eines Datenbankdiagrammes) dann würde nach dem Hinzufügen eines neuen Elementes (namens 'ADO.NET Entity Data Model') die Struktur quasi ohne jegliche Anpassung automatisch generiert werden! Der Quellcode zum Zugriff würde dann etwa so generiert werden:
DeineEntities db = new DeineEntities(); Kunden k = db.Kunden.First(); MessageBox.Show(k.Kunden_Telefonnummer.Telefonnummer.Telefonnummer1); // ok, hier wegen Namens-Konvention später verbessern
Der EF Generator erstellt dann also automatisiert sogenannte NavigationsEigenschaften (oder hier), über die Du die anderenverknüpften Tabellen erreichen kannst.
Kurz zur Struktur: es ist schon etwas ~eigen, in diesem Fall eine zusätzliche Zwischen-Tabelle (Kunden_Telefonnummer) zu benutzen. Man kann ja auch in der Kunden-Tabelle schon die TelefonID haben - aber ok, hat sicher Gründe.
ciao Frank- Als Antwort markiert Rudi_sucht_Antworten Montag, 4. April 2011 11:45
Alle Antworten
-
Hallo Werner,
um dir zu helfen brauchen wir mehr Infos : Nutzt du klassisch ADO.NET oder schon einen O/R Mapper wie Entity Framework oder evtl. auch Linq2SQL ?
Was ich an deiner Tabellenstruktur merkwürdig finde :
Wo ist denn die Beziehung zwischen Kunden und Kunden_Telefonnummer ? Da fehlt dir also noch ein Fremdschlüssel.
Kunden_Telefonnummer:
Kunden:
KundenID = Primärschlüssel Int
TelefonID = Fremdschlüssel Int
KundenID = Primärschlüssel Int
Name .. varchar(50)
Ort ... varchar(50)
Grüße
Pawel
-
Hallo Werner,
wenn Deine Datenbank so erstellt wurde, dass Verknüpfungen (Relationen) bereits dort definiert wurden (das geht zum Beispiel auch durch die Erstellung eines Datenbankdiagrammes) dann würde nach dem Hinzufügen eines neuen Elementes (namens 'ADO.NET Entity Data Model') die Struktur quasi ohne jegliche Anpassung automatisch generiert werden! Der Quellcode zum Zugriff würde dann etwa so generiert werden:
DeineEntities db = new DeineEntities(); Kunden k = db.Kunden.First(); MessageBox.Show(k.Kunden_Telefonnummer.Telefonnummer.Telefonnummer1); // ok, hier wegen Namens-Konvention später verbessern
Der EF Generator erstellt dann also automatisiert sogenannte NavigationsEigenschaften (oder hier), über die Du die anderenverknüpften Tabellen erreichen kannst.
Kurz zur Struktur: es ist schon etwas ~eigen, in diesem Fall eine zusätzliche Zwischen-Tabelle (Kunden_Telefonnummer) zu benutzen. Man kann ja auch in der Kunden-Tabelle schon die TelefonID haben - aber ok, hat sicher Gründe.
ciao Frank- Als Antwort markiert Rudi_sucht_Antworten Montag, 4. April 2011 11:45