【问题标题】:"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection"“ObjectContext 实例已被释放,不能再用于需要连接的操作”
【发布时间】:2013-08-01 19:58:02
【问题描述】:

这里有小问题。 代码如下:

 using (LINKSEntitiesMaster LE = new LINKSEntitiesMaster())
            {

                Cache["ALLDB"] = LE;                   

            }

 internal void FilterDB(string ParentPageTitle, string ButtonName)


    {

        var ALLdb = (LINKSEntitiesMaster)Cache["ALLDB"];


        var x = ALLdb.MainTables.Where(s => s.Language == ParentPageTitle && s.ButtonName == ButtonName).Select(w => w.AllLinks).ToList();



        Links.DataSource = ALLdb;
        Links.DataBind();


}

错误在主题中。 我将过滤后的数据库保存到列表中,看不到连接关闭的原因...?

我一直在搜索,但找不到答案。

【问题讨论】:

  • 它在 using 块结束的第二秒释放,因此您将释放的上下文存储在缓存中。

标签: c# asp.net database


【解决方案1】:

连接可能已关闭,因为LINKSEntitiesMaster LE = new LINKSEntitiesMaster() 包含在 using 语句中。一旦您的代码超出了using 范围,LINKSEntitiesMaster 就会被处理掉。

【讨论】:

  • 所以我需要连接的每个功能都必须重新打开它?,我想打开一个连接并将所有数据库存储在缓存中,而不是在需要时使用它
  • 否则我该如何处理数据库?并在不打开连接的情况下使用它?
  • 我建议看看使用某种 ORM,如 EntityFramework。你连接的是什么类型的数据库?
  • SQL 2008 小型数据库,只有 1 个表
  • 你在一条小溪上建一座吊桥。每次只需创建一个新的上下文并继续前进。
猜你喜欢
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多