Ich versuche, diese Abfrage Arbeit mit EF zu machen, aber es gibt eine Ausnahme aus:NotSupportedException: LINQ to Entities erkennt nicht die Methode
var c = ac.Communities.OrderBy(o => o.Posts.Count())
.Skip(page*limit)
.Take(limit)
.Select(o => o.ToViewModel()).ToArray();
Die ToViewModel()
Methode aus dem Community
Modell sieht wie folgt aus:
public CommunityModel ToViewModel()
{
return new CommunityModel()
{
category = Category.Name,
created = CreationTime,
description = Description,
id = Id,
name = Name,
ownerId = Owner.Id,
postsCount = Posts.Count(),
score = Posts.Sum(o => o.Likes - o.Unlikes),
shortDescription = ShortDescription,
subscribersCount = Subscribers.Count(),
};
}
Was mache ich falsch?
Um Ihre 'ToViewModel' Methode auszuschließen, öffnet sich ein' .ToList() 'vor der 'Select' und sehen, ob Sie immer noch das Problem haben. – Stuart
@Stuart Das funktioniert, danke! Also, im Grunde genommen ist die 'List' nicht länger ein' IQueryable', also versucht sie nicht, dies in SQL Queries für die Datenbank zu übersetzen, oder? Das bedeutet, dass es all das in der Erinnerung tut, die "Community" -Klasse als ein tatsächliches Objekt und nicht als eine db-Einheit behandelnd, richtig? – Reynevan
Das ist richtig, Sie erzwingen eine Aufzählung der 'IQueryable' an dem Punkt,' ToList' zu verwenden, dann sind die folgenden Linq-Methoden auf eine in Memory-Auflistung und müssen nicht über die Übersetzung in SQL – Stuart