【发布时间】:2015-05-11 21:26:30
【问题描述】:
我有一个实体框架查询,其中根据一组可变的用户定义标准显示项目。最终查询应该包括相关实体“主题”,但只是间歇性地这样做。也就是说,在同一个结果集中,一些结果将包括他们的主题,而另一些则不会。更奇怪的是,同一记录“a”将在一个请求中包含其相关主题,但在另一个请求中不包含,即使我在两种情况下都使用相同的选择代码。这是最终选择的相关sn-p:
var newQuery = query.Select(l => new
{
RecordId = l.RecordId,
RawFileId = l.RawFileId,
Subjects = l.RecordSubjects.Where(s => s.Subject.ClientId == data.ClientId && l.RecordId == s.RecordId && s.IsActive).Select(s => new { Name = s.Subject.Name, SubjectId = s.Subject.SubjectId, Description = s.Subject.Description }),
Url = (l.Url == null) ? "#" : l.Url, //make sure all results display a valid Url, even if the field is null
RegionCode = l.RegionCode ?? "",
RegionName = l.Region.Name ?? "",
Year = l.Year
}
为了清楚起见,我删除了一堆额外的字段和其他相关实体。
更新:为了进一步澄清,我可以运行完全相同的查询并让主题第一次出现在特定记录中,然后什么都没有出现.所以我不认为它与数据有关。
【问题讨论】:
-
能否提供样本和数据值。
-
我相信“间歇性”时尚将与主题的客户端 id 等于当前数据对象的 id 并且查询的主键等于主题的主键的主题完全相关,并且在哪里主题仍然活跃。
-
试图弄清楚如何做到这一点并仍然尊重我的 NDA...
-
Travis - 尝试遵循您的建议,并意识到我对代码的编辑使事情变得不太清楚。修复了 ID 名称以使事情更清晰......我希望。
-
@acullen72 - 我的评论也有点模糊。我的观点是,用于选择您使用的主题的 Where 子句可能是为什么有些被加载而有些没有。
l.RecordSubjects.Where(s => s.Subject.ClientId == data.ClientId && l.RecordId == s.RecordId && s.IsActive)
标签: c# entity-framework