AutoMapper,WCF和多层:如何处理依赖

时间:2016-08-08 15:34:32

标签: c# wcf automapper

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

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

要检索数据库信息,我想使用automapper将Entity对象映射到DTO对象。

但是如果我在global.asax中配置映射,我的问题是:服务层不引用数据访问层(我不想要这个)。

我该怎么办?

非常感谢。

1 个答案:

答案 0 :(得分:0)

假设您正在使用包含配置文件扫描的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.Initialize,就像在任何其他应用程序范围的配置一样。

或者,只需创建一个WCF项目,将所有项目折叠为一个,然后使用文件夹进行组织而不是所有这些。这也有效。