【发布时间】:2015-03-03 17:21:16
【问题描述】:
这是我的 linq 查询:
Dim Jobs As New DBDataContext
Dim jobpart = Jobs.JobParts.Where(Function(x) x.JobNum = 143401).ToList
这是我在 sql profiler 中看到的 sql 语句:
SELECT [t0].[JobNum], [t0].[PartNum], [t0].[UserName] FROM [dbo].[JobParts] AS [t0]
为什么 where 语句没有通过?它正在从数据库中选择所有记录,并且似乎正在过滤掉我以后想要的记录。
更新:
我创建了一个新网站,其中只有该数据类和相同的代码,并且“位置”显示在分析器中。我尝试将该数据类添加到我当前的网站,并且“位置”没有出现在分析器中。什么可能会改变 Linq 在项目之间创建查询的方式?
【问题讨论】:
-
这不是 linq “优化”的方式——不在数据库上运行昂贵的过滤器,而是认为客户端上的循环更好?
-
能否包含定义 Jobs 和 JobParts 的代码?这可能就是问题所在。
-
通过调用
.ToList(),您是说超出查询点的所有内容都将在本地执行,但我希望在数据库中执行之前的所有内容。您确定这是整个查询吗? -
@JeroenVannevel 是的,就是这样。我确实删除了几十个字段以使其可读。
-
@ConstantCoder 我提出了 Jobs 的定义,但是我将如何在我的 dbml 设计器中显示 JobParts 的定义?
标签: .net sql-server linq linq-to-sql