2009-07-29 1 views
1

ich ein Modell mit Entity Framework von drei Datenbanktabellen erstellt haben:Entity Framework Verbände

  1. Agents
  2. AgentsGroups
  3. Gruppen

AgentsGroups ist eine einfache Tabelle mit drei Spalten: 1 ID und zwei Fremdschlüssel, die Agenten und Gruppen verbinden (jeder Agent kann mehrere Gruppen haben). Ziemlich grundlegende Sachen.

Entity Framework erkennt die Beziehungen zwischen der Tabelle korrekt. Jetzt, mit LINQPad Ich bin in der Lage, die Namen aller Gruppen mit einem Mittel aus dem Agenten-ID beginnen verbunden zu bekommen:

from a in Agents 
    join ag in AgentsGroups on a.Code equals ag.AgentCode 
    join g in Groups on ag.GroupCode equals g.Code 
    where a.Code == 10199 
    select g.Name 

Dies allerdings nicht auf das sehr Programm arbeiten, wie in der Tat, AgentCode und GroupCode werden als Zuordnungen, nicht als Felder zugeordnet.

Ich denke, ich muss Include verwenden, aber ich habe es nie verwendet, also ist die Hilfe gefragt: Wie kann ich den angegebenen semi-funktionierenden linq Ausdruck in einem ähnlichen Ausdruck die Gruppennamen, aber die Verwendung von Associations?

Vielen Dank im Voraus

+0

Es ist nicht klar, warum die Abfrage wie angegeben nicht funktionieren würde. Was genau ist das Problem, das Sie bekommen? –

Antwort

2

Viel einfacher in EF:

from a in Agents 
where a.Code == 10199 
from g in a.Groups 
select g.Name 

Sie so gut wie nie in EF verbinden verwenden.

+0

hi, danke für die Antwort, aber der gegebene Ausdruck gab mir alle Zeilen in der Gruppe .. wo ist die Assoziation? soll es implizit sein? – pistacchio

+0

Sehen Sie sich die Qualifikationsmerkmale (z. B.) genau an. Es ist nicht implizit, nur klein. Ich habe den Namen der Assoziationseigenschaft erraten; Sie haben es vielleicht etwas anderes genannt. –