C# 数据上下文和处理的问题
我有一些C代码看起来像C# 数据上下文和处理的问题,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有一些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: 'Da
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.'.
我四处寻找解决方案,人们建议使用声明忘记,只需写:
DataContext db = new DataContext(blah);
Foo.bar(db);
// Let the garbage collector go about its merry business.
和禁用延迟加载:
db.DeferredLoadingEnabled = false;
Foo.bar(db);
这两种解决方案我都试过了,但还是有例外。还有其他我应该尝试的吗?我怀疑您正在处理Foo.bar(db)中的DataContext代码>您正在处理数据上下文。
首先,您使用数据上下文的方式是正确的,使用
将其包装在中
这意味着在Foo.bar
中的某个地方,您正在处理数据上下文;没有其他选择
这意味着您必须在代码中搜索以下构造之一:
db.Dispose()代码>或
使用(db){…}
尝试在Visual Studio中对单词“Dispose”或“using”执行“Find all”,并手动检查所有实例。是否可以发布“bar”方法实现?似乎您有另一个使用内部“bar”方法调用的方法。