我有一张表“orders”,其外键为“ProductID”。

我想在网格中显示订单 产品名称, , 没有 延迟加载 为了更好的性能,但我如果使用 数据加载选项 它检索 全部 产品领域,就像一个 矫枉过正.

有没有办法找回 仅有的 第一个查询中的产品名称?我可以在 DBML 中设置某些属性吗?

在这个 桌子 说“外键值”在 Linq To SQL 中是“可见的”,但不知道这意味着什么。

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

有帮助吗?

解决方案 3

我在另一个问题中找到了解决方案 哪个.net ORM可以处理这种场景, ,这与 利亚姆克莱南 答案但更清楚(也许问题也更清楚)

其他提示

您要求的是 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 };

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top