Parallel EntityFramework

meh*_*nik 3 c# parallel-processing entity-framework

以下示例是否可以与实体框架并行工作?

using (var dbContext = new DB())
{
var res = (from c in dbContext.Customers
           orderby c.Name
           select new
                    {
                    c.Id, 
                    c.Name,
                    c.Role
                    }
          ).ToDictionary(c => c.Id,
                         c => new Dictionary<string, object> {
                                                               { "Name",c.Name },
                                                               { "Role", c.Role }
                                                             });
}
Run Code Online (Sandbox Code Playgroud)

例如,如果我添加AsParrallel,将会改变什么?

using (var dbContext = new DB())
{
var res = (from c in dbContext.Customers
           orderby c.Name
           select new
                    {
                    c.Id, 
                    c.Name,
                    c.Role
                    }
          ).AsParallel().ToDictionary(c => c.Id,
                         c => new Dictionary<string, object> {
                                                               { "Name",c.Name },
                                                               { "Role", c.Role }
                                                             });
}
Run Code Online (Sandbox Code Playgroud)

还有一个例子.问题是3个例子中的差异是一样的.

using (var dbContext = new DB()) 
{ 
var res = (from c in dbContext.Customers.AsParallel() 
           orderby c.Name 
           select new 
                    { 
                    c.Id,  
                    c.Name, 
                    c.Role 
                   } 
          ).AsParallel().ToDictionary(c => c.Id, 
                         c => new Dictionary<string, object> { 
                                                               { "Name",c.Name }, 
                                                               { "Role", c.Role } 
                                                             }); 
} 
Run Code Online (Sandbox Code Playgroud)

All*_*nek 9

不,查询是在数据库上运行,而不是在客户端中运行.数据库可以使用多个线程来执行查询以加速进程,但在任何情况下,您都无法将服务器端处理与客户端并行扩展相结合.