【问题标题】:AutoMapper , WCF and multi layers : how to do with dependencyAutoMapper、WCF 和多层:如何处理依赖关系
【发布时间】:2016-08-08 15:34:32
【问题描述】:

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

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

要检索数据库信息,我想使用自动映射器将实体对象映射到 DTO 对象。

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

我该怎么办?

非常感谢。

【问题讨论】:

  • 你要映射什么,DAC(实体)到服务模型或 DAC 到 UI(视图模型)?
  • 嗨,dac 到服务模型。但我在服务和数据之间有业务层
  • 但是你的数据层必须返回一个模型对象,一个实体对象。如果此模型与 dac 分离,您可以在服务层中引用该模型。

标签: c# wcf automapper


【解决方案1】:

假设您使用的是 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 项目,将所有这些项目合并为一个,然后使用文件夹进行组织,而不是所有这些。这也有效。

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 2015-05-11
    • 2010-09-18
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多