2009-06-09 9 views
0

nicht sicher, ob dies eine Lookup-Tabelle genannt wird ... Hier ist ein Screenshot von dem Schema: http://apoads.com/db-schema.pngLINQ to SQL-Suchtabelle? Join vielleicht? Ich bin ... verloren;/

Was ich tun möchte, ist die Anzeige anschließen und MilBase Tisch, an dem die MilBase .BaseID ist ein gegebener Wert. Im Ergebnis möchte ich auf die Daten wie folgt zugreifen können: ad.MilBase.BaseName, etc ...

Ich kann einfach nicht scheinen, meine Gedanken um dieses gerade jetzt zu wickeln ...;/

+0

Ihr Bild funktioniert nicht –

+0

thx, sollte jetzt funktionieren. – Chaddeus

Antwort

1

Ihr Problem ist, dass Ihr Schema die Semantik einer Viele-zu-viele-Beziehung zwischen Ad und MilBase hat und als die wirklich gewünschte Art, dies in LINQ zu tun wäre, wäre dies ad.Milbases Halten Sie eine Sammlung von Milbases. Das Problem wird nicht durch die Tatsache verbessert, dass LINQ To SQL keine Viele-zu-Viele-Beziehungen direkt und in der Realität unterstützt (vorausgesetzt, dass Ihre Nachschlagetabelle nur Eins-zu-Eins oder Eins-zu-Eins definiert) -viele Beziehung) Sie müssen etwas tun würde wie

ad.Adbases.Single().MilBase 

natürlich vorausgesetzt, es gibt immer eine sein wird - wenn das nicht der Fall ist, dann haben Sie einige kompliziertere Dinge vor dir.

Natürlich ist auch ein Join immer möglich - egal auf welche Art. Könnten Sie die Beziehung zwischen Ad und Milbase klären, wenn das nicht die gesuchte Information ist? (Viele-zu-viele, usw.?). Außerdem - wenn es sich nicht um ein Many-to-Many handelt und Sie dazu in der Lage sind, würde ich dies wirklich als Fremdschlüssel in Milbase oder der Ad-Tabelle ändern.

EDIT: Als Antwort auf Ihren Kommentar,

Sie etwas tun könnte, wie

var query = from a in db.ad 
      select new { 
       a.property1, 
       a.property2, 
       ... 
       Milbases = a.Adbases.Select(s => s.Milbase) 
      }; 

Offensichtlich, dass Code nicht kompiliert werden, aber es sollte Ihnen eine grobe Vorstellung geben - auch bin ich sicher, es kann auf bessere Weise gemacht werden, aber so etwas sollte funktionieren.

+0

Die Beziehung, die ich erstellen möchte, ist, dass eine Anzeige in vielen Basen sein könnte. Das könnte für viele Anzeigen sein ... ist mein Schema in diesem Fall falsch? Sollte das nicht eine Viele-zu-Viele-Beziehung sein? – Chaddeus

+0

Wenn Sie die Beziehung haben wollen, wo eine Anzeige in vielen Basen sein kann (wie Sie gesagt haben) und wo viele Basen viele Anzeigen enthalten können (ich habe nicht ganz verstanden, wenn Sie das erklären wollten) dann ja, Ihre Das oben angegebene Schema ist korrekt. – kastermester

+0

Oh auch - ich glaube, der allgemeine Ausdruck für Ihre "Lookup" -Tabelle wäre eine Mapping-Tabelle - wie es die Zuordnung (en) zwischen Ad und Milbase beschreibt. – kastermester