感谢您的光临。我有以下返回声明:

            //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()调用引发“底层提供程序无法打开”错误;与实体框架一起使用AsParallel()时,已经很好地记录了该问题。



由于我在ToList()之前调用AsEnumerable(),因此我的集合现在是内存中的集合,难道不是线程安全的吗?

最佳答案

问题是我调用的构造函数中的某些属性是延迟加载的,因此在调用AsParallel()和使用例如.Include(i => i.Image)的构造函数之前,我需要急于加载它们。

有趣的是,即使不使用AsParallel(),我的查询也可以更快地加载相关的实体,从而大大提高了查询速度。

关于c# - 为什么此AsParallel操作会引发数据提供程序错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33716024/

10-11 19:04