LINQ to SQL从查询中未列出的表中获取数据

时间:2012-08-16 13:49:44

标签: c# sql linq-to-sql

我正在使用LINQ to SQL从SQL Server 2012数据库中的一组表中获取数据。查询结果是正确的,并正确构造了我的域对象; 然而,当我检查生成的SQL(通过DataContext.Log或SQLProfiler)时,查询似乎不可能简洁。

最值得注意的是,我的许多实例都是由一个特定表中的行数据构建的。我通过与所述表具有一对多关系的表通过外键访问此表,但是,此表不会出现在SQL查询中的任何位置!不在FROM或JOIN中陈述或任何事情。

我很高兴生成的查询正确且快速地执行但我只是不明白如何从生成的SQL中没有提到的表中获取数据。我想了解发生了什么。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

这可能是由于延迟加载

加载域对象时,在您明确访问域对象之前,不会加载依赖域对象。

来自MSDN

  

当您查询对象时,实际上只检索您请求的对象。不会同时自动提取相关对象。 ... 您无法看到相关对象尚未加载的事实,因为尝试访问它们会产生检索它们的请求

详细了解延期加载herehere