2009-07-03 29 views
0

Ich bin mit dem folgenden Problem konfrontiert: in der Steuerung Ich wähle die Daten, die ich brauche, und speichern Sie es in die ViewData;ASP.NET MVC und Entity Framework: Query persistance

using (Models.SkedruleEntities ctx = new Models.SkedruleEntities()) 
{ 
    ViewData["users"] = (from u in ctx.User select u); 
} 

In der Ansicht Ich versuche, von dem Bildschirmtextsystem wie folgt zu lesen:

<p> 
    <%foreach(User user in (IEnumerable<User>)ViewData["users"]) { %> 
     <div><%=user.Name %></div> 
    <%}%> 
</p> 

Aber ich ein System bekommen. ObjectDisposedException Fehler, da die ViewData scheint die Abfrage zu enthalten, nicht die Daten von der Abfrage abgerufen und natürlich ist der Kontext ctx nicht mehr verfügbar.

Irgendwelche Hilfe? Dank

Antwort

2

Sie speichern die Abfrage in den Ansichtsdaten, nicht die Ergebnisse. In der Ansicht erhalten Sie die Abfrage zurück und führen sie aus. In diesem Moment ist der Kontext bereits entsorgt.

Die Lösung ist die Abfrage in der Steuerung und speichert das Ergebnis in dem Bildschirmtextsystem auszuführen:

ViewData["users"] = (from u in ctx.User select u).ToList(); 
2

Gerade ToList() hinzufügen:

ViewData["users"] = (from u in ctx.User select u).ToList(); 
Verwandte Themen