Requête de plusieurs-à-plusieurs relations avec linq/Entity Framework. CodeFirst
Comment puis-je interroger plusieurs-à-plusieurs relations à l'aide de Entity Framework code first et linq? Le problème est que EF créer automatiquement la table de relation. Donc, je ne l'ai pas dans mon contexte.
C'est le modèle relationnel:
J'ai besoin d'une liste d'Articles pour un Category_Id, essentiellement répliquer quelque chose comme ça:
select a.Id, a.Title,a.ShortDescription
from Articles a
join CategoryArticles ca on ca.Article_Id=a.Id
where ca.Category_Id = @parameter
Cependant mon dbcontext seulement :
public DbSet<Article> Articles { get; set; }
public DbSet<Category> Categories { get; set; }.
Merci pour toute aide.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire ceci:
Cette façon, vous obtiendrez les articles qui satisfait à la condition que vous souhaitez. C'est le code sql généré par cette requête:
Mise à jour
Une autre option pourrait être à l'aide de
SelectMany
méthode d'extension (comme @Khaled souligné) à partir de votre requête à partir deCategories
au lieu deArticles
:Qui permettrait de générer une jointure Interne au lieu de la
EXIST
qui est le produit deAny
méthode d'extension.Exists
au lieu d'unjoin
. Merci pour les commentaires. D'accord avec vous sur les performances, mais si vous omettez la table de jonction dans le cadre de votre modèle, c'est la seule façon de le faire.Comment sur
Cela devrait fonctionner correctement (produire le droit rejoint instruction sql.)
c => c.Articles
. Cela permettra de rejoindre chaque article de la liste des catégories sélectionnées à partir d'Où la requête.Exemple linq méthode syntaxe
J'ai juste couru dans cela et compris que j'avais poster la solution que j'ai trouvé pour quiconque de tomber sur cette page. Cela produit un
INNER JOIN
.Si vous voulez juste l'ensemble de la table, y compris toutes les relations, peut-être essayer quelque chose comme ceci:
Ajouter de la requête et de la table de jonction: