首页 > 解决方案 > EntityFramework Core 3 和 Automapper。包含在过滤器中

问题描述

我正在尝试使用 EFC3 从 IQueryable 执行 automapper ProjectTo<> 调用。我的对象有一些导航属性,我需要这样检索,但其他一些我需要使用 Where 子句进行过滤。

我想要实现的是使用 ProjectTo<<'BondVm'>> 的 1 个数据库调用

var vm = _context.Bonds
    .Where(x => x.Id == request.Id)
    .ProjectTo<BondVm>(_mapper.ConfigurationProvider);

这是 BondVM 以防万一:

        public class BondVm
        {
            public BondDto BondDto { get; set; }
            public RatingMarketDataDto RatingDto { get; set; }
            public PriceMarketDataDto PriceDto { get; set; }
        }

并且能够以上述条件过滤我的 2 个导航属性(评级和价格)。我不知道如何过滤我的映射配置文件

如果您需要更多信息,请与我们联系。非常感谢您的帮助!

编辑:

关于 Lucian Bargaoanu 的建议,这是我的映射配置文件:

public BondVmMapper()
            {
                Map.ForMember(d => d.BondDto, o => o.MapFrom(x => x));

                Map.ForMember(d => d.PriceDto, o => o.MapFrom(s => s.MarketDatas.OfType<PriceMarketData>()));

                Map.ForMember(d => d.RatingDto, o => o.MapFrom(s => s.MarketDatas.OfType<RatingMarketData>()));
            }

奇怪的是,我们将 Enumerable 映射到单个对象上,这应该如何工作?

标签: c#entity-framework-coreautomapper

解决方案


推荐阅读