我有这个类,我经常(但不总是)在使用方法NullReferenceException时得到ExecuteQuery或ObjectDisposedException:
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();
}
}但是,如果我要在方法中创建上下文,我就不会有任何异常。为什么?
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();
}
}发布于 2013-10-11 13:57:57
在进行更新时,不要让StoreDbContext在附近徘徊。最后,它将包含陈旧的数据/实体。公认的模式是为一个工作单元/作用域操作集触发一个新的上下文。第二个示例可能是可以接受的,但您需要确保通过使用using语句创建上下文来处理上下文。重构此方法以解决此问题。
我倾向于将搜索结果保存在单独的上下文中,没有跟踪(只读),但是会使用新的上下文进行更新,因为我使用的是WCF数据服务。
https://stackoverflow.com/questions/19319955
复制相似问题