3

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

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

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

有任何想法吗?

4

1 回答 1

4

这可能是由于延迟加载

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

来自MSDN

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

在此处此处阅读有关延迟加载的更多信息。

于 2012-08-16T13:56:50.663 回答