【问题标题】:Minimise db call Automapper queryable extension最小化数据库调用 Automapper 可查询扩展
【发布时间】:2018-02-16 13:16:19
【问题描述】:

使用带有 Automapper 和 EF 核心的 OData 来公开下面的数据模型,

  1. 客户
  2. CustomerMetric:CustomerLevel、VIPFlag、其他字段...

Customer 与 CustomerMetric 有一对多的关系。目标是让 Customer 控制器在 CustomerMetric 表的第一个匹配行中公开 CustomerLevel,VIPFlag。

我在地图配置中做了什么,

  • .ForMember(dest => dest.CustomerLevel, opt => opt.MapFrom(src => src.CustomerMetric.FirstOrDefault().Level))
  • .ForMember(dest => dest.VIPFlag , opt => opt.MapFrom(src => src.CustomerMetric.FirstOrDefault().VIPFlag ))

这一切都很好,值被正确填充。但是,automapper 触发了对数据库的两次调用,“select top 1 CustomerLevel”和另一个“select top 1 VIPFlag”。

如何通过一次调用来获取两个字段而不是对每个单独的字段进行两次调用?我试过 .Include 在控制器上它不起作用..

谢谢!!

【问题讨论】:

    标签: automapper


    【解决方案1】:

    您可以尝试将这两个分组到一个结构或类中,然后映射整个事物。这将在 EF6 中工作,我不确定 EF 核心。见this

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 2011-09-01
      相关资源
      最近更新 更多