Dans un cas type many-to-many, où la table de jointure ne possède que la clé composite (deux champs de clé primaire), Entity Framework ajoute les propriétés de navigation directement aux entités associées. Toutefois, lorsque la table de jointure comporte des champs supplémentaires, Entity Framework crée une entité pour la table de jointure afin que vous puissiez "obtenir" les informations supplémentaires.
Dans le cas que vous avez décrit ci-dessus, Entity Framework générera une Entité pour votre table "join" qui aura des associations à tous les 3 de vos objets.
J'ai créé un exemple en utilisant les entités Item1, Item2, Item3 et Link.
Du point de vue de la base de données, si je l'ID d'un Item1, je peux interroger la table avec quelque chose comme:
select Item1ID, Item2ID, Item3ID from Link where Item1ID = 1
Cela me donnera une liste de ITEM2, ITEM3 « paires » qui sont associés avec Item1 # 1. LINQ to Entities, je peut interroger le modèle EF De même en faisant:
var q =
from link in context.Link
where link.Item1ID == 1
select new { link.Item1, link.Item2, link.Item3 };
Ou si je l'ai déjà un objet Item1 que je veux des relations pour:
item1.Link.Select(l => new { l.Item1, l.Item2, l.Item3 });
Ce ne sont que des exemples de base , mais vous pouvez facilement utiliser les méthodes d'extension LINQ et IQueryable pour transformer/grouper les données à votre convenance.
Si vous pouvez fournir plus de détails sur votre cas, je pourrais vous donner des exemples plus spécifiques. J'espère que cela pourra aider!
Tim