我有一些看起来像
的C#代码using (DataContext db = new DataContext(Program.config.dbContextStr)) {
Foo.bar(db);
}
因此bar是类Foo的静态方法,bar使用传入的db对象。它还将db对象传递给它调用的其他一些方法。
问题是我遇到了这个例外:
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'DataContext accessed after Dispose.'.
我一直在寻找解决方案,人们建议忘记using
声明并简单地写一下:
DataContext db = new DataContext(blah);
Foo.bar(db);
// Let the garbage collector go about its merry business.
并禁用延迟加载:
db.DeferredLoadingEnabled = false;
Foo.bar(db);
我已经尝试了这两种解决方案,但我仍然得到了例外。还有其他我应该尝试的事情吗?
答案 0 :(得分:1)
您正在处置数据上下文。
首先,您使用数据上下文的方式是正确的,将其包装在using
中。
这意味着在Foo.bar
内的某个地方,您正在处理您的数据上下文;没有其他选择。
这意味着您必须在代码中搜索以下任一构造:
db.Dispose();
或
using (db) { ... }
。
尝试在Visual Studio中对“Dispose”或“using”一词执行“全部查找”并手动检查所有实例。
答案 1 :(得分:0)
我怀疑您正在Foo.bar(db);