AutoMapper、WCF和多层:如何处理依赖关系

本文关键字:处理 关系 依赖 何处理 WCF AutoMapper | 更新日期: 2023-09-27 18:01:15

我有一个具有多层(和DTO对象)的WCF项目:

-Service (WCF主机)
-业务层(或域层)
-数据访问层(使用实体框架)

为了检索数据库信息,我想使用automapper将实体对象映射到DTO对象。

但是如果我在全局配置映射。asax,我的问题是:服务层不引用数据访问层(我不希望这样)。

我该怎么办?

AutoMapper、WCF和多层:如何处理依赖关系

让我们假设您正在使用AutoMapper 5.1,它包括配置文件扫描。首先,您希望将您的配置放到配置文件的适当位置:

public class EntityToDtoProfile : Profile {
    public EntityToDtoProfile() {
         CreateMap<Entity, Dto>();
    }
}

接下来,在WCF应用程序中,无论应用程序启动在哪里,您都将初始化AutoMapper,传入程序集名称以扫描配置文件:

Mapper.Initialize(cfg => {
    cfg.AddProfiles(new [] {
        "MyLayeredApp.BLL",
        "MyLayeredApp.DAL",
        "MyLayeredApp.Service"
    });
});

AutoMapper将扫描这些程序集的概要文件,并在配置中注册它们。确保你只打给Mapper。在启动时初始化一次,就像你在任何其他应用范围内的配置一样。

或者,只创建一个WCF项目,将所有这些项目折叠成一个,并使用文件夹来组织而不是所有这些。