【发布时间】:2010-03-12 14:39:12
【问题描述】:
更新:据我所知,我正在想象我在下面描述的问题。所以,这几乎不是问题。未来的读者,继续……这里没什么可看的。
我有一个 ASP.NET MVC 项目,很像 NerdDinner 教程示例。 (我使用的是 MVC 2,但遵循了 NerdDinner 教程来创建它)。
按照教程part 3 中的说明,我通过创建“Linq to SQL 类”(.dbml) 表面并将我的数据库表放到它。设计器已经根据我的数据库表自动添加了生成的类之间的关系。
假设我的课程与 NerdDinner 示例相同,因此我有 Dinner 和 RSVP 表,其中每个 Dinner 记录与许多 RSVP 记录相关联 - 因此在生成的类中,Dinner 对象具有 RSVPs 属性,它是RSVP 对象列表。
我的问题是这样的:一旦我 访问一个 Dinner 对象,它会加载所有相应的 RSVP 对象,即使我不使用 RSVPs 成员。
第一个问题:这真的是生成类的默认行为吗?
在我的特定情况下,对象图包含更多的表(其中的记录要多一个数量级),因此这是灾难性的行为 - 当我只想显示单个父记录的详细信息。
第二个问题:是否有任何通过设计器 UI 公开的属性可以让我修改此行为? (我找不到任何东西)。
第三个问题:我看到了如何通过使用与 DataContext 关联的 DataShape 对象来控制 DataContext 中相关记录的加载的描述。这就是我的本意吗?如果有的话,有没有像 NerdDinner 这样的教程,不仅可以展示如何做,还可以建议正常使用的“模式”?
【问题讨论】:
-
" 看起来(我很高兴证明这是错误的),只要我访问 s 加载所有相应的 RSVP 对象" 这是什么意思?您是否检查了分析器,RSVP SQL 是否正在运行?它是否返回行?
-
我在调试器中检查了 Dinner 对象,并深入研究了似乎已填充的 RSVPs 成员。也许是我在调试器中查看它导致它被填充的事实?有没有简单的判断方法?
-
加里就是这样。你检查它,你加载它。
-
jfar 说了什么。调试器将填充您检查的内容。
标签: asp.net-mvc visual-studio linq linq-to-sql