ich Entity Framework-Code Zuerst bin mit, und ich habe die folgenden Objekte in meinem Modell:Abrufen von Objekten aus vielen zu vielen Beziehung
public class Category {
[DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
public int CategoryId { get; set; }
[Required, MaxLength(128), Index(IsUnique = true)]
public string CategoryName { get; set; }
public string Description { get; set; }
public virtual ICollection<Article> Articles { get; set; }
}
public class Article {
[DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
public int ArticleId { get; set; }
[Required, MaxLength(128), Index]
public string ArticleName { get; set; }
public string Description { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
ich eine Methode in meinem Data Access Layer Umsetzung aller Articles
abrufen dass in einer der ausgewählten Categories
:
IEnumerable<Article> GetArticles(int[] categoryIds);
Mein Problem: Wie erstelle ich den Abfrageausdruck? Wenn ich in SQL tun dies, würde ich eine Abfrage wie folgt schreiben:
SELECT a.*
FROM Articles a
JOIN ArticlesInCategories AS aic ON a.ArticleId = aic.ArticleId
JOIN Categories AS c on aic.CategoryId = c.CategoryId
WHERE c.CategoryId IN (. . .)
Also das bedeutet ich dies so schreiben würde?
return (from a in context.Articles
join c in context.Categories ON a.CategoryId = c.CatgegoryId
where categoryIds.Contains(c.CategoryId));
Das einzige Problem ist, dass die Article
Klasse keine CategoryId
Eigenschaft hat.
Wie erstelle ich diese Abfrage?