【问题标题】:How to include related objects in grouped Entity LINQ queries?如何在分组的实体 LINQ 查询中包含相关对象?
【发布时间】:2011-05-25 14:58:31
【问题描述】:

我有一些与 SettingGroup 相关的 SettingDescription 实体。 通过将“修改”字段作为密钥的一部分来保存设置历史记录。 要获取与特定类别匹配的设置,我使用此查询 (after help from here):

    var latestSettings =
        context.Settings.Include("Description.SettingGroup")
            .OrderByDescending(x => x.Modified)
            .GroupBy(x => 
                new { 
                    x.Category, 
                    x.Group, 
                    x.Name, 
                    x.Target }, x => x)
            .Where(x => x.Key.Category == category)
            .Select(result => result.FirstOrDefault())
            .ToArray();

这会返回一组最新设置,但“包含”部分会被完全忽略。但是,我可以通过运行将描述加载到上下文中的第二个虚拟查询来强制加载描述。

    var latestSettings =
        context.Settings.Include("Description.SettingGroup")
            .OrderByDescending(x => x.Modified)
            .GroupBy(x => 
                new { 
                    x.Category, 
                    x.Group, 
                    x.Name, 
                    x.Target }, x => x)
            .Where(x => x.Key.Category == category)
            .Select(result => result.FirstOrDefault())
            .ToArray();
    var settingDescriptions = 
        context.SettingDescriptions.Include("SettingGroup")
               .Where(x => x.Category == category)
               .ToArray();

为什么在“独立”组查询中忽略包含?

我可以将设置和描述加载合并到一个查询中吗?

【问题讨论】:

    标签: linq linq-to-entities


    【解决方案1】:

    来自 EF 团队的 AlexJ 发布了一系列出色的技巧,包括:

    “提示 22 - 如何使 Include 真正包含”
    http://blogs.msdn.com/b/alexj/archive/2009/06/02/tip-22-how-to-make-include-really-include.aspx

    在我看来,您的查询正在返回“设置”实体(没有“形状变化”),因此应该应用此提示。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 2014-07-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多