Linq/EF、预加载和 GROUP BY 问题

2023-11-25

我在 GROUP BY 和急切加载方面遇到问题。我尝试解释我在做什么。 我正在查询数据上下文 ctx 的事件

事件类具有以下属性

string Description
DateTime Date
bool IsDeleted
Guid SubjectId 
string Title 
DateTime Created
Guid ForProjectId 

Person TriggeredBy
List<Guid> Targets 

有多个具有相同主题 ID 的事件,我希望最终拥有具有唯一主题 ID 的事件,并且这些事件是组中最新的。我最终得到以下查询。

var events = from x in
             (from e in ctx.Events
              .Include("TriggeredBy")
              .Include("Targets")
              group e by e.SubjectId
              into g
              select new 
                     { 
                       GroupId = g.Key, 
                       EventsWithSameSubjectId = g, 
                     }
              )
              select x.EventsWithSameSubjectId
              .OrderByDescending(y => y.Created).FirstOrDefault();

查询编译良好并返回正确的结果集。但包含的属性始终为空。

当我删除查询以查看急切加载是否正常工作时......

var events =  (from e in ctx.Events.OfType<DataNotificationEvent>()
              .Include("TriggeredBy")
              .Include("Targets")
              select e).ToList();

这将返回具有所有包含属性的事件。

这是 Linq / EF 的已知问题/错误吗?或者有什么方法可以消除此错误。

Regards

文森特·奥滕斯


您正在投影到匿名类型,所以Include()不会那样工作的。因为你所做的group而投影到匿名类型就是改变查询的形状。这会消除急切的加载。阅读本文可能有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq/EF、预加载和 GROUP BY 问题 的相关文章

  • 比较 2 个对象并检索具有不同值的字段列表

    给定一个具有 35 个字段的类和 2 个具有一定数量的不同字段值的对象 有没有一种聪明的方法来获取带有字段名称的列表 其中对象如下所示 e g obj1 Name aaa obj1 LastName bbb obj1 Address xcs
  • Entity Framework Code First 是否允许在单独的文件中进行流畅的映射?

    我正在使用实体框架代码优先开发一个相当大的数据库模式 与数据注释方法相比 我更喜欢 Fluent API 因为它将我的域对象保留为简单的 POCO 为了使用 Fluent API 我必须在继承自 DbContext 的类中重写 OnMode
  • 如何在 .Net Core 3、Visual Studio 2019 和 docker 中使用“dotnet watch run”

    我正在使用 Visual Studio 2019 来使用 docker 和 NET Core 3 我通过将 Dockerfile 添加到我的项目 右键单击项目 gt 添加 gt Docker 支持 来容器化我的应用程序 并且我能够启动它 但
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • C#编译器在翻译LINQ表达式时如何选择SelectMany?

    Enumerable SelectMany 有 4 个重载签名 为了简单起见 我们忽略两个签名int争论 所以我们有 2 个 SelectMany 签名 public static IEnumerable
  • 为什么没有主键的表是一个坏主意?

    我对数据建模非常陌生 根据微软的实体框架 不允许使用没有主键的表 这显然是一个坏主意 我试图找出为什么这是一个坏主意 以及如何修复我的模型 这样我就不会出现这个漏洞 我当前的模型中有 4 个表 User City HelloCity 和 R
  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • 如何修改 edmx 的默认代码生成策略?

    我想修改默认的代码生成策略 该怎么做 我只是想修改类名 lt code Escape container gt to Entities并将默认连接字符串更改为name Default 我不想为该项目创建模板文件 我想编辑它以便它可以在全球范
  • 实体框架映射枚举:指定的值不是类型“Edm.Int32”的实例参数名称:值

    我试图将实体框架查询的结果返回到我自己的 dto 类中 同时映射我的枚举 TradeType 我收到以下错误 指定的值不是类型 Edm Int32 的实例参数名称 值 知道如何修复或解决方法吗 Thanks public IEnumerab
  • 使用表达式树构造 LINQ GroupBy 查询

    我已经在这个问题上坚持了一个星期了 但没有找到解决方案 我有一个像下面这样的 POCO public class Journal public int Id get set public string AuthorName get set
  • 配置多个数据库Entity Framework 6

    在我的解决方案中 我有 2 个使用 Entity Framework 6 的项目 每个项目都指向不同的数据库 都使用相同的数据提供 SQL Server 我的解决方案中的第三个项目需要使用这两个数据库 我的问题是如何配置这些上下文 我尝试在
  • EF 5.0 中的链接 OR 条件

    我将以此为序言 我正在积极寻找这个问题的解决方案 但我想 如果堆栈上有人已经解决了这个问题 我可能会缩短一些研究和开发时间 我在网上没有找到任何东西 所以这里是 我们正在构建的应用程序框架中有一个案例 我们需要能够接受一组谓词 List
  • 比较 2 个 linq 应用程序:意外结果

    我起草了2 ASP NET应用程序 using LINQ 一个连接到微软SQL服务器 另一个对某些专有内存结构 这两个应用程序都可以使用以下表格3 个 int 字段 有500 000 条记录 内存结构与 SQL Server 表相同 使用的
  • 如何在 MVC5 中创建两种类型的用户?

    我正在创建 MVC5 应用程序 并且已经在使用 ASP NET Identity 来创建用户 因此 我已经有了 AspNetUsers 表 每当用户注册时 我都会在那里获得一个条目 我还有一个管理员角色 我可以手动指定哪个注册用户是管理员
  • 在 List ForEach() 中设置多个属性?

    给定一个类 class foo public string a public int b 0 然后是它们的通用列表 var list new List
  • 在运行时更改实体框架数据库架构

    在大多数 ASP NET 应用程序中 您可以通过在运行时修改连接字符串来更改数据库存储 即 我可以通过简单地更改连接字符串中 数据库 字段的值来从使用测试数据库更改为生产数据库 我正在尝试使用实体框架更改架构 但不一定是数据库本身 但没有成
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • 尚未为此带有 SQL Server 的 DbContext .NET Core 配置数据库提供程序

    我一直用这个把头撞在墙上 并且一直在谷歌上搜索无济于事 我刚刚开始一个新的 ASP NET Core MVC 项目 我已将这两个包安装 更新为 2 2 0 Microsoft EntityFrameworkCore SqlServer Mi

随机推荐

  • Javascript 检测系统的音量(声音)和插入的音频插孔

    HTML5 具有板载音量检测功能
  • SQL Server BIGINT 或 DECIMAL(18,0) 主键

    我们有一个 SQL Server 2005 数据库 我们希望提高批量删除 插入 选择的性能 我注意到它使用decimal 18 0 为其主键 我知道这会给我们带来更多的价值bigint但我希望这可能是一个快速的胜利 并且根据我的计算 应该能
  • 无法解析“:app@debug/compileClasspath”的依赖关系:无法解析com.android.support:appcompat-v7:26.1.0

    无法解析 app debug compileClasspath 的依赖关系 无法解析com android support appcompat v7 26 1 0 无法解析 com android support appcompat v7
  • 更新代码生成 6.0.9 后无法加载项目 X 的​​信息

    我正在开发一个 NET Core 项目 昨天 Web CodeGeneration已自动更新 更新后 当我尝试向项目添加新视图时出现错误 脚手架失败 无法加载项目 X 的 信息 我尝试再次删除并重新安装所有 nuget 软件包 我检查了软件
  • wcf 尝试设置跟踪以进行调试,而不是写入日志文件

    这是我的 web config 在 IIS7 上的应用程序中运行 WCF 服务 但没有任何内容写入指定文件 已向所有人授予对该文件的权限
  • 使用GCC编译C代码

    我在我的电脑上安装了 MinGWWindows8 笔记本电脑并尝试编译 C 代码文件 gcc test c o test exe 编译器没有给出警告或错误 但没有创建 test exe 我如何让编译器创建文件 test c My termi
  • 如何在 Django 1.4 中存储简单的日期时间

    我有一个格式为 2012 05 19 19 13 00 的简单日期和时间 需要使用 Django 1 4 及其时区感知功能来存储它 尽管无法知道日期最初位于哪个时区 但将其存储为 UTC 似乎是有意义的 但是 使用 pytz 等 我不确定如
  • 将整数格式化为十六进制字符串

    我需要从随机整数 0 255 列表中创建一串十六进制数字 每个十六进制数字应由两个字符表示 5 05 16 10 等 Example Input 0 1 2 3 127 200 255 Output 000102037fc8ff 我设法想出
  • 模拟按键 X 秒

    这是我用来在某个进程中模拟 Tab 键按下的代码 DllImport user32 dll static extern bool PostMessage IntPtr hWnd UInt32 Msg int wParam int lPara
  • 如何确定生成的进程何时准备就绪? (使用 CreateProcess() 和 FindWindow())

    这应该很简单 我正在创建一个程序 该程序使用 win32 生成一个进程CreateProcess 功能 加载此进程后 我使用以下命令找到它的窗口FindWindow并使用它发送消息SendMessage 问题是 我如何知道该窗口何时准备好接
  • VSCode 终端建议不会自动完成

    VSCode 的 PowerShell 终端现在以灰色显示您可能想要输入的内容 大概来自历史记录 但似乎没有办法真正接受这个建议 按 Tab 键只是执行正常的 PowerShell 自动完成 通常是 cmdlet 或路径 这个功能是什么 我
  • Java 8 lambda 表达式身份契约

    The JavaDoc 为LambdaMetaFactoryJava 1 8 的指定 lambda 捕获 可能涉及新函数对象的分配 或者可能返回现有函数对象 但它没有指定何时以及在什么情况下它可能选择一种方式或另一种方式 看看实际执行情况L
  • Numpy 性能差异取决于数值

    在评估 Numpy 中的表达式时 我发现了奇怪的性能差异 我执行了以下代码 import numpy as np myarr np random uniform 1 1 1100 1100 进而 timeit np exp 0 5 myar
  • Dijkstra 负权重算法

    好吧 首先我知道 Dijkstra 不适用于负权重 我们可以使用 Bellman ford 代替它 但在我遇到的一个问题中 它指出所有边的权重都从 0 到 1 不包括 0 和 1 而路径的成本实际上就是产品 所以我的想法就是只取日志 现在所
  • Rails 6.1.5:未初始化常量 Mail::TestMailer

    为什么我在 Rails 6 1 5 Ruby 3 1 0 中遇到 未初始化常量 Mail TestMailer 错误 而在 Rails 6 1 5 Ruby 3 0 1 没有问题的情况下工作 发现以下来自Ruby 3 1 0 的新闻 The
  • 使用 PIL 翻译图像 [重复]

    这个问题在这里已经有答案了 如何使用 PIL 和 python 将图像在四个方向之一上平移 5 个像素 我已经看到我们可以使用im transform size AFFINE data 但我不知道该怎么做 Image transform s
  • 如何获得 Task.WhenAny 对 Task 和 CancellationToken 的效果?

    我有一个交互式任务 在 最糟糕 的情况下根本不会执行 因此它由TaskCompletionSource 我想等待此任务完成 或者我收到的令牌被取消 以先发生者为准 完成此类工作的完美工具是Task WhenAny 唯一的问题是它只需要任务
  • 将 RGB8 byte[] 转换为位图

    我有来自相机的 RGB8 格式的原始像素数据 我需要将其转换为Bitmap 但是 那Bitmap PixelFormat似乎只支持 RGB 16 24 32 和 48 格式 我尝试使用PixelFormat Format8bppIndexe
  • Hibernate 不会在 Spring Boot 项目中抛出 LazyInitializationException

    我使用 Hibernate 5 0 从事 Spring Boot 项目 不幸的是 Hibernate 会读取延迟初始化的对象而不抛出异常LazyInitializationException即使在事务提交之后 我怎样才能启用LazyInit
  • Linq/EF、预加载和 GROUP BY 问题

    我在 GROUP BY 和急切加载方面遇到问题 我尝试解释我在做什么 我正在查询数据上下文 ctx 的事件 事件类具有以下属性 string Description DateTime Date bool IsDeleted Guid Sub