1

我有一个带有外键“ProductID”的“订单”表。

我想在带有产品名称的网格中显示订单,而不使用 LazyLoad以获得更好的性能,但是如果使用DataLoadOptions它会检索所有产品字段,这些字段看起来像是过度杀伤力

有没有办法在第一个查询中只检索产品名称?我可以在 DBML 中设置一些属性吗?

在这张表中说“外键值”在 Linq To SQL 中是“可见的”,但不知道这是什么意思。

编辑:更改了标题,因为我不确定是否没有解决方案。
不敢相信没有人有同样的问题,这是一种非常常见的情况。

4

3 回答 3

5

您要求的是 linq-to-sql 不提供的优化级别。我认为您最好的选择是创建一个查询,该查询准确返回您想要的数据,可能是匿名类型:

from order in DB.GetTable<Orders>()
join product in DB.GetTable<Products>()
on order.ProductID = product.ID
select new { ID = order.ID, Name = order.Name, ProductName = product.Name };
于 2008-08-26T22:36:21.467 回答
0

如果您在 linq 查询中仅选择所需的列,然后在查询上调用 .ToList() ,它将立即执行,并且只会带回您感兴趣的列。例如,如果您这样做:

var q = from p in dataContext.products select p.ProductName;
var results = q.ToList();

您将返回存储在结果中的产品名称列表,当查询在服务器上执行时,它只会返回 ProductName 列。

于 2008-08-26T22:11:03.600 回答
0

我在另一个问题中得到了解决方案which .net ORM can deal with this scenario,这与liammclennan答案有关,但更清楚(也许问题也更清楚)

于 2009-01-08T19:21:07.053 回答