0

收到:

var ApprovalRoleRefList = db.ApprovalRoles.Select(x => x.ApprovalRoleName);
var CostDivisionRefList = db.CostDivisions.Select(x => x.CostDivisionName);

如果我想用 linq 一次调用 DB,我该怎么做?

这不是我想要的:

var lists = (from ar in db.ApprovalRoles select ar.ApprovalRoleName).Concat (
from cd in db.CostDivisions select cd.CostDivisionName);

在该项目中,我又得到了 3 个列表,但是有 1 个电话或 5 个电话是“糟糕的表现”吗?我知道这部分不会用那么多,但优化它很有趣。

4

2 回答 2

2

我不得不说乔恩提出了一个非常好的观点,我将在这里谈谈。显然,往返一次以上比往返五次更昂贵,但仅限于最简单的水平。此外,也不是永远不需要此功能。考虑一下Stack Overflow 实际上使用的Dapper ,它具有完全执行您正在寻找的功能的功能。因此,功能存在这一事实告诉我,即使是 Stack Overflow 也需要在某一时刻执行此操作。

但是,在将自己与 Stack Overflow 的需求进行比较之前,让我们考虑一下为什么 Stack Overflow 可能需要此功能。截至 2010 年,他们每天的点击量约为 150 万。好吧,当您获得如此多的命中时,您需要使用许多不同的技术,而往返是这些技术中最少的。极限缓存、负载平衡、服务器群、分布式计算等等。

所以简而言之,在没有完全了解您的应用程序的情况下,我要说的是,除非您落入 Stack Overflow 的船,每天发出数百万次读取和写入,否则您正在优化一些实际上不会产生任何变化的东西。因此,5 次往返是正确的方法。

于 2012-10-11T11:40:56.370 回答
0

如果您必须在一个请求中返回结果,LINQ to SQL 确实支持来自存储过程的多个结果集。看看http://www.thinqlinq.com/Post.aspx/Title/Using-LINQ-to-SQL-to-return-Multiple-Results看看是否能满足您的需求。

于 2012-10-11T14:13:20.193 回答