最小化db调用Automapper可查询扩展

时间:2017-09-07 17:54:41

标签: automapper

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

  1. 客户
  2. CustomerMetric:CustomerLevel,VIPFlag,其他领域......
  3. 客户与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会触发对数据库的两次调用,并选择前1个CustomerLevel'另一个选择前1名VIPFlag'。

    如何通过一次调用来获取两个字段而不是每个字段的两个调用?我试过。在控制器上包含它不起作用..

    谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试在结构或类中对这两个进行分组,然后映射整个事物。那可以在EF6中使用,我不确定EF核心。请参阅this