Linq 转 SQL:我可以只加载连接表中的一个字段吗?
-
09-06-2019 - |
题
我有一张表“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 列。
不隶属于 StackOverflow