UPDATE:从我听到的情况来看,我想象的是我在下面描述的问题。所以,这几乎不是问题。未来的读者,继续前进...在这里没有什么可看的。如何阻止自动生成的Linq to SQL类加载所有数据?
我有一个ASP.NET MVC项目,很像NerdDinner教程示例。 (我使用MVC 2,但为了创建它,遵循NerdDinner教程)。
根据本教程的part 3中的说明,我通过创建一个“Linq to SQL Classes”(.dbml)表面并将我的数据库表放到它上面来创建了我的数据库的Linq-to-SQL模型。设计者根据我的数据库表自动添加生成的类之间的关系。假设我的类是根据NerdDinner示例的,所以我有Dinner和RSVP表,每个Dinner记录都与许多RSVP记录相关联 - 因此在生成的类中,Dinner对象具有RSVPs属性,它是一个RSVP对象列表。
我的问题是这样的:它出现(和我会很乐意被证明是错误的这一点),一旦我 访问Dinner对象,它加载所有相应的RSVP对象,即使我请勿使用RSVPs会员。
第一个问题:这真的是生成的类的默认行为吗?
在我的特殊情况下,对象图包含更多的表(它的数量级更多的记录),所以这是灾难性的行为 - 当我想要做的就是显示数据时,我会加载大量数据单亲记录的细节。
第二个问题:是否有通过设计器UI公开的任何属性,让我修改此行为? (我找不到)。
第三个问题:我已经看到了如何通过使用带有DataContext的相关的DataShape
对象控制在DataContext
相关记录加载的描述。那是我要做的事情吗?如果有的话,是否有像NerdDinner这样的教程不仅会展示如何去做,还会为正常使用提供一个“模式”?
“看来(和我会很乐意被证明是错误的这一点),一旦我访问■装载所有相应的RSVP对象的” 这是什么意思?您是否检查分析器,RSVP SQL是否正在运行?它是否返回行? – jfar 2010-03-12 14:43:16
我在调试器中检查了Dinner对象,并深入到RSVPs成员中,该成员似乎已经填充。也许这是事实,我在调试器中查看它导致它被填充?有一种简单的方法可以告诉吗? – 2010-03-12 14:46:22
那就是Gary的情况。你检查它,你加载它。 – jfar 2010-03-12 14:52:07