【问题标题】:recover "DbContext" lost out after a method恢复一个方法后丢失的“DbContext”
【发布时间】:2015-11-15 16:02:33
【问题描述】:

我需要你的帮助。 我开始访问 ASP.net,但无法检索“dbcontext”以在“datagrid”中显示我的请求。这是我的代码:

public IQueryable<DiagTab> Clooper(string m_ValEnvoi)
    {
        string Ladatatable = m_ValEnvoi; 

        using (var db = new DiagEntities()) 
        {
            var secki = db.DiagTabs.Where(Ladatatable); // Ladatatabase = Dynamic LinQ 

            return secki;
        }

我这样称呼(没有错误)

TheLoop pilou = new TheLoop();                                         
                pilou.Clooper(Valtest);
                var olami = pilou.Clooper(Valtest);

但如果我试试这个:

var selection_click = olami;
                    GridView1.DataSource = selection_click.ToList();
                    GridView1.DataBind(); 

代码被中断并显示“无法完成操作,因为 DbContext 已被删除”。 是否有可能让粘贴具有此请求的 Dbcontext? 感谢您的帮助

【问题讨论】:

  • 在处理 DbContext 之前,您没有具体化查询。当你实际执行它时,它已经被释放了。

标签: c# entity-framework methods dbcontext iqueryable


【解决方案1】:

您应该在方法内部调用ToList(),然后再释放DbContext

【讨论】:

  • 感谢您的回答。是但不是。我将多次使用这种方法,使用这种方法我会丢失这些信息,并且使用“Dynamic Linq”的代码不再循环使用
【解决方案2】:

不要使用using 来处理DiagEntities,如果您想在多个方法中使用它,只需在类构造函数中为您的DiagEntities 声明一个属性。

public IQueryable<DiagTab> Clooper(string m_ValEnvoi)
    {
        string Ladatatable = m_ValEnvoi; 


            var secki = db.DiagTabs.Where(Ladatatable); // Ladatatabase = Dynamic LinQ 

            return secki;
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2023-03-27
    相关资源
    最近更新 更多