如何将dbquery封装到自动化配置文件中

时间:2018-01-10 08:09:19

标签: entity-framework automapper

我尝试从业务层中的EF实体传递到dto。

所以我设置了Automapper,一切顺利。

这是我的个人资料类:

    public DocumentProfile()
        {
             CreateMap<Data.Models.Docflow.Package, PackageDto>()
                .ForMember(dest => dest.ReceiverName, opt => opt.MapFrom(src => src.Receiver.FullName))
                .ForMember(dest => dest.SenderName, opt => opt.MapFrom(src => src.Sender.FullName))

                ;
        }

但我在我的代码的不同位置进行从Package到PackageDto的映射。我在不同情况下有不同的具体查询。所以我需要记住在所有查询中包含导航属性Receiver和Sender。

那么如何为Package实体填充单个查询以及某些投影的所有必要属性?

我看到了带有值解析器和类型转换器的示例,但似乎不合适。

1 个答案:

答案 0 :(得分:0)

@ lucian-bargaoanu,感谢您的评论!

最后,我找到了两个合适的解决方案。

共享部分是:

我在存储库中准备了像 PackageDto Get(Guid packageId)这样的函数,并且我在dbquery中创建了映射到存储库中的dto,在BL中我只使用dto。

但区别在于:

  1. dbquery在内存中返回所需的实体类型,然后由Mapper.Map&lt;&gt;
  2. 映射
  3. dbquery返回IQueryable,然后由ProjectTo
  4. 扩展

    无论如何,它是必要的设置配置文件,带有映射规则,但第二种方式显然正如它所执行的那样包括你需要的。