我有一个包含多个图层的WCF项目(和DTO对象):
-Service(WCF主机)
- 业务层(或域层)
- 数据访问层(使用实体框架)
要检索数据库信息,我想使用automapper将Entity对象映射到DTO对象。
但是如果我在global.asax中配置映射,我的问题是:服务层不引用数据访问层(我不想要这个)。
我该怎么办?
非常感谢。
答案 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项目,将所有项目折叠为一个,然后使用文件夹进行组织而不是所有这些。这也有效。