Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据上下文和处理的问题_C#_Linq_Linq To Sql - Fatal编程技术网

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

我有一些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.'.
我四处寻找解决方案,人们建议使用声明忘记
,只需写:

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”方法调用的方法。