首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectDisposedException in EntityFramework

ObjectDisposedException in EntityFramework
EN

Stack Overflow用户
提问于 2013-10-11 13:54:36
回答 1查看 1K关注 0票数 1

我有这个类,我经常(但不总是)在使用方法NullReferenceException时得到ExecuteQuery或ObjectDisposedException:

代码语言:javascript
复制
public class Dao
{
    protected StoreDbContext Context = new StoreDbContext();

    public IEnumerable<T> ExecuteQuery<T>(string query, params object[] parameters)
    {
        return  Context.Database.SqlQuery<T>(query, parameters).ToList();
    }

}

但是,如果我要在方法中创建上下文,我就不会有任何异常。为什么?

代码语言:javascript
复制
public class Dao
{
    protected StoreDbContext Context = new StoreDbContext();

    public IEnumerable<T> ExecuteQuery<T>(string query, params object[] parameters)
    {
        return  new StoreDbContext().Database.SqlQuery<T>(query, parameters).ToList();
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-11 13:57:57

在进行更新时,不要让StoreDbContext在附近徘徊。最后,它将包含陈旧的数据/实体。公认的模式是为一个工作单元/作用域操作集触发一个新的上下文。第二个示例可能是可以接受的,但您需要确保通过使用using语句创建上下文来处理上下文。重构此方法以解决此问题。

我倾向于将搜索结果保存在单独的上下文中,没有跟踪(只读),但是会使用新的上下文进行更新,因为我使用的是WCF数据服务。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19319955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档