Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
.Net实体objectcontext线程错误_.net_Entity Framework_Multithreading_Savechanges_Objectcontext - Fatal编程技术网

.Net实体objectcontext线程错误

.Net实体objectcontext线程错误,.net,entity-framework,multithreading,savechanges,objectcontext,.net,Entity Framework,Multithreading,Savechanges,Objectcontext,我有一个n层asp.net应用程序,它将一个对象从我的DAL返回到BAL,如下所示: public IEnumerable<SourceKey> Get(SourceKey sk) { var query = from SourceKey in _dataContext.SourceKeys select SourceKey; if (sk.sourceKey1 != null) { query = from

我有一个n层asp.net应用程序,它将一个对象从我的DAL返回到BAL,如下所示:

public IEnumerable<SourceKey> Get(SourceKey sk)
{
    var query = from SourceKey in _dataContext.SourceKeys
                select SourceKey;

    if (sk.sourceKey1 != null)
    {
        query = from SourceKey in query
                where SourceKey.sourceKey1 == sk.sourceKey1
                select SourceKey;
    }

    return query.AsEnumerable();
}
在调用“Get”函数后尝试调用“Delete”时,收到以下错误:

不允许新事务处理,因为 中还有其他线程在运行 会议

这是一个ASP.Net应用程序。我的DAL包含一个实体数据模型。我在其中拥有上述函数的类共享相同的_dataContext,它在我的构造函数中实例化。我的猜测是,阅读器仍然从“Get”函数打开,并且没有关闭。我怎样才能关上它

在我的UI层中,我循环浏览结果并尝试删除它们,如下所示:

foreach(SourceKey sk in skm.Get(new SourceKey()))
{
    Debug.WriteLine(sk.sourceKey1);

    skm.Delete(sk);
}
编辑

此行出现错误:

_dataContext.DeleteObject(sk);

我怀疑这与Linq处理查询有关。我是根据我过去读过的文章来猜测的,但我认为您的查询是延迟执行的-查询是从第一次使用枚举数的点(第一次
MoveNext
调用)开始打开的,直到枚举完成才关闭


如果您控制枚举,则可以确保枚举器已完成,并查看这是否有任何区别。或者,更可能的是,某个地方的配置可能会控制查询的运行方式,但这超出了我所看到的范围。

据我所知,查询将在AsEnumerable()上执行。我确实将delete从foreach循环中删除了,并且成功了
_dataContext.DeleteObject(sk);