【发布时间】:2015-11-12 20:53:54
【问题描述】:
这是交易。
我的模型中有两个相关的表。我们将为他们命名:reports 和 subReports。
很重要的一点是我现在还不知道我需要的报告的reportId,所以我需要使用一些参数来找到它。
好的,所以,如果我需要通过 EntityFramework 查询reports 的一个元素,我执行以下操作:
reports myReport = context.reports.Where(r=> r.startYear.Equals(2014) && r.endYear.Equals(2015) && r.reportCategoryId.Equals(1)).SingleOrDefault();
此行检索与信息匹配的唯一报告。
但这就是问题所在。如果我想访问myReport 应该拥有的subReports 的集合,结果证明这样的集合是空的。这是我的问题,我不知道为什么。我的表是正确相关的。
奇怪的是,如果我像这样更改我的查询:
reports myReport = context.reports.Where(r=> r.reportId.Equals(1)).SingleOrDefault();
相关实体已加载,并且该集合具有应具有的子报表。看到不同?我必须通过reportId,但这不是我需要的,因为正如我已经告诉过你的,我不知道reportId。
你知道发生了什么吗?
提前谢谢你:)
【问题讨论】:
-
好吧,你不
Include子报告,所以你需要允许延迟加载之后才能得到它们。在您的第一个查询中禁用延迟加载。如果没有更多细节,我无法判断它是什么。但是由于延迟加载是可能的,我能想到的唯一区别是,在第一种情况下,延迟加载在上下文中被禁用。 -
我尝试了包含的东西。原来是这样。谢谢!
标签: c# entity-framework entity-framework-4 where-clause navigation-properties