【问题标题】:ASP.NET MVC and Entity Framework: query persistanceASP.NET MVC 和实体框架:查询持久性
【发布时间】:2009-07-03 11:25:29
【问题描述】:

我面临以下问题: 在控制器中,我选择我需要的数据并将其存储到 ViewData;

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

在视图中,我尝试像这样从 ViewData 中读取数据:

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

但我收到 System.ObjectDisposedException 错误,因为 ViewData 似乎包含查询,而不是查询检索到的数据,当然上下文 ctx 不再可用。

有什么帮助吗? 谢谢

【问题讨论】:

    标签: c# asp.net-mvc linq entity-framework


    【解决方案1】:

    您将 查询 存储在视图数据中,而不是结果中。因此,在视图中,您可以取回查询并执行它。在那一刻,上下文已经被释放了。

    解决方案是在控制器中执行查询,并将结果存储在ViewData中:

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

    【讨论】:

      【解决方案2】:

      只需添加ToList():

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

      【讨论】:

        猜你喜欢
        • 2014-11-22
        • 1970-01-01
        • 2010-09-25
        • 2011-02-20
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多