为什么这个AsParallel操作会抛出数据提供程序错误?

时间:2015-11-15 03:18:41

标签: c# entity-framework task-parallel-library plinq

谢谢你的期待。我有以下退货声明:

            //Return the result set
            return new FilterDto.FilterResult<Application>
            {
                Count = count,
                Results = _results.ToList().AsParallel().Select(s => ConstructApplication(s))
            };

调用以下方法:

public Application ConstructApplication(Application application)
        {
            var result = new Application
            {
                Id = application.Id,
                Title = application.Title,
                Icon = application.Icon   

                   . . .

            };

            return result;
        }

AsParallel()调用正在使基础提供商无法打开&#34;错误;当AsParallel()与实体框架一起使用时,该问题已得到充分记录。

问题

因为我在ToList()之前调用了AsEnumerable(),所以我的集合不应该是线程安全的,因为它现在是内存中的集合吗?

1 个答案:

答案 0 :(得分:0)

问题是我调用的构造函数中的一些属性是延迟加载的,所以我需要在调用AsParallel()之前急切加载它们,并使用构造函数,例如.Include(i => i.Image)

有趣的是,即使不使用AsParallel(),我也可以通过热切加载相关实体来加快查询速度。