首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行EntityFramework

并行EntityFramework
EN

Stack Overflow用户
提问于 2010-04-28 19:13:29
回答 2查看 9.7K关注 0票数 3

有没有可能在下面的例子中与实体框架并行工作?

代码语言:javascript
复制
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 }
                                                             });
}

例如,如果我添加AsParrallel,会有什么变化?

代码语言:javascript
复制
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 }
                                                             });
}

再举一个例子。问题是一样的,三个例子有什么不同?

代码语言:javascript
复制
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 } 
                                                             }); 
} 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-28 19:18:36

否,查询是在数据库上运行的,而不是在客户端上运行。数据库可以使用多个线程来执行查询,以加速该过程,但在任何情况下,您都不能将服务器端处理与客户端并行扩展结合起来。

票数 9
EN

Stack Overflow用户

发布于 2010-04-28 19:50:05

您可以使用PLINQ (并行LINQ)

http://msdn.microsoft.com/en-us/library/dd460688.aspx

http://msdn.microsoft.com/en-us/magazine/cc163329.aspx

例如(来自上面):

IEnumerable IEnumerable= ...;var q= data.AsParallel().Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x));

foreach (q中的var e) a(e);

对于foreach,您也可以使用TPL (任务并行库)版本。http://msdn.microsoft.com/en-us/library/dd460717(v=VS.100).aspx

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2728882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档