1

J'ai deux entités, Compte et Abonnement avec une association plusieurs-à-plusieurs entre elles. Je ne peux pas trouver dans les tutoriels n'importe où comment faire ce qui suit:Utilisation de LINQ et Entity Comment puis-je retourner les valeurs d'une relation plusieurs-à-plusieurs

Je veux trouver tous les comptes avec un abonnement de type x. Si je n'utilisais pas le framework Entity, je pourrais rejoindre la table AccountSubscription, mais cela n'est pas accessible via Entity. Dois-je créer une entité spéciale si j'ai besoin d'interroger une relation plusieurs-à-plusieurs?

Répondre

3

EF devrait créer une propriété de navigation pour un grand nombre à plusieurs. Ensuite, vous devriez être en mesure de faire quelque chose comme ceci:

var accounts = from a in Accounts 
       where a.Subscriptions.Any(s => s.SubscriptionType == "something") 
       select a; 

Par exemple, je simple db avec une relation plusieurs à plusieurs entre les produits et les groupes: alt text

et EF crée l'association dans le modèle: alt text

Je peux donc créer une requête comme celui-ci (ici, y compris les groupes afin que je puisse voir la catégorie):

alt text

+0

Merci beaucoup. Cela fonctionne très bien. – user427875

+0

Qu'est-ce que vous utilisez pour afficher les résultats? –

+1

@SnOrfus, en utilisant [LINQPad] (http://www.linqpad.net/), qui vous permet également d'afficher le SQL généré par EF. *Hautement recommandé :-) –

0

Qu'en est-il quelque chose comme ceci:

List<Accounts> myAccounts = //get accounts; 

foreach(Accounts a in myAccounts) 
{ 
    foreach(Subscriptions s in a) 
    { 
    //add it to a global list? 
    } 
} 
+0

Cela va tout simplement retirer tout de la base de données et causer un problème majeur dans les performances! – xandy

Questions connexes