【问题标题】:Entity framework core get single child from of parent child collection实体框架核心从父子集合中获取单个子
【发布时间】:2020-06-03 20:46:46
【问题描述】:

我正在使用实体框架核心,并且具有简单的表结构,其中系统有很多日志,但是对于我的某些功能,我希望拥有该集合的最后一个孩子,所以我尝试了:

Models.Entities.System system = await Context.Systems
   .Include(log => log.MaintenanceLogs)
   .FirstOrDefaultAsync(system=> system.Id == system);

但据我所知,我不能添加

.Include(log => log.MaintenanceLogs).Last() 

这行不通,我可以创建手动查询并得到我想要的,但这不是重点。 此外,我可以在查询具体化后获取所有日志并获得最后一个,但仍然可以有大量的日志数据库记录,我只需要最后一个,所以为什么要浪费资源。

原因是我需要从最后一个日志中获取一个值,并基于该值更新系统(当然都是在事务中)。

可以吗?

【问题讨论】:

  • 按日志日期降序排序,然后 Take(1),然后调用 FirstOrDefault()
  • 虽然可能没有必要先调用 Take(1)。

标签: c# .net-core entity-framework-core


【解决方案1】:

可以吗

Models.Entities.MaintenanceLog log = await Context.MaintenanceLogs
   .Include(log => log.System)
   .LastOrDefaultAsync(log => log.System.Id == system);

相反?你知道的,换个角度吧。

这只会获取 MaintenanceLogs 表中的最后一个条目,其中 System.Id 等于 system 变量的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多