Wie man assoziierte Entitäten zählt, ohne sie in Entity Framework zu holen

Ich hab mich schon gewundert, über diese für eine Weile jetzt, so dachte ich, es wäre Wert, mit meinem ersten Stack-Überlauf post Fragen stellen.

Vorstellen, ich habe eine Diskussion mit einer zugehörigen Liste der Nachrichten:

DiscussionCategory discussionCategory = _repository.GetDiscussionCategory(id);

discussionCategory.Diskussionen ist eine Liste der Diskussion Personen, die aktuell nicht geladen ist.

Was ich will, ist in der Lage sein zu Durchlaufen und die Diskussionen in einem discussionCategory und sagen, wie viele Nachrichten sich in jede Diskussion, ohne das abrufen der message-Daten.

Wenn ich versucht habe, bevor ich gehabt haben, zu laden, die Diskussionen und die Nachrichten, so dass ich tun könnte etwas wie diese:

discussionCategory.Discussions.Attach(Model.Discussions.CreateSourceQuery().Include("Messages").AsEnumerable());

foreach(Discussion discussion in discussionCategory.Discussions)
{

int messageCount = discussion.Messages.Count;

Console.WriteLine(messageCount);

}

Ist das ziemlich ineffizient, um mich, wie ich bin, Holen potenziell Hunderte von Nachrichtentexten aus der Datenbank und halten Sie im Speicher, wenn alle, die ich tun möchte, ist zählen Ihre Anzahl für Präsentations-Zwecke.

Habe ich einige Fragen, die Berührungspunkte zu diesem Thema, aber Sie schien es nicht zu unmittelbar.

Vielen Dank im Voraus für alle Gedanken, die Sie möglicherweise auf dieses Thema.

Update - Etwas mehr code, wie verlangt:

public ActionResult Details(int id)
    {  
        Project project = _repository.GetProject(id);
        return View(project);
    }

Dann in der view (nur um es zu testen):

Model.Discussions.Load();
var items = from d in Model.Discussions select new { Id = d.Id, Name = d.Name, MessageCount = d.Messages.Count() };

foreach (var item in items) {
//etc

Ich hoffe das macht mein problem etwas klarer. Lassen Sie mich wissen, wenn Sie mehr brauchen, code-details.

InformationsquelleAutor der Frage Oligarchia | 2010-01-06

Schreibe einen Kommentar