2010-02-10 7 views
3

J'ai une base de données qui comprend les éléments suivants:Entity Framework et Link Table question

** Tableau 1 **

  • Id (PK)
  • Champ1

* * Tableau 2 **

  • Id (PK)
  • Champ2

** Tableau lien **

  • Table1Id (FK)
  • Table2Id (FK)

Le problème est, je ne peux pas accéder à la table 2 du tableau 1 , même si la relation existe dans la base de données.

Par exemple, ce qui suit devrait être possible:

var Results = from c in DataContext.Table1 
       where c.Table2.Field2 == "Test" 
       select c; 

Cependant, "c.Table2.Field2" est pas disponible pour une raison - tout ce que j'obtenir pour "c.Table2." est le suivant (entre la norme toute <>, où <> et al):

  • RelationshipName
  • RelationshipSet
  • SourceRoleName
  • TargetRoleName

Alors, évidemment, quelque chose est quelque part çela, mais je ne peux pas savoir quoi!

Les deux tables existent dans le schéma d'entité et ont une relation valide entre elles.

+0

Juste pour ajouter des informations sur Entity Framework et tables lien - la table de lien doit avoir une clé primaire composite des deux côtés de la relation , sinon EF le marque en lecture seule et ne crée aucune relation à travers la table. – Moo

Répondre

2

La raison pour laquelle c.Table2.Field2 n'est pas disponible est que c.Table2 n'a pas de propriété appelée Field2. c.Table2 est une liste des entités qui ont cette propriété, pas une instance de cette entité. Il est pas clair ce que votre intention est là, mais je pense vous voulez:

var Results = from c in DataContext.Table1 
       where c.Table2.Any(t2 => t2.Field2 == "Test") 
       select c;