首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoMapper (4.2+)配置文件是逻辑还是基础结构的一部分?

AutoMapper (4.2+)配置文件是逻辑还是基础结构的一部分?
EN

Stack Overflow用户
提问于 2018-03-06 05:47:34
回答 2查看 196关注 0票数 1

我有WCF服务,就像ORM一样。我需要一个映射器将实体映射到Dtos。考虑到关注点的分离(SOLIDDDD ),我想知道AutoMapper配置和概要文件应该去哪里?我的项目结构看起来是这样的:

数据(EF) -> Logic -> WCF Services / WCF Contracts -> WindowsService (主机)

我遵循了github的规则,创建了一个尼尼微模块:

代码语言:javascript
复制
public class AutoMapperModule : NinjectModule
{
    public override void Load()
    {
        Bind<IValueResolver<SourceEntity, DestModel, bool>>().To<MyResolver>();

        var mapperConfiguration = CreateConfiguration();
        Bind<MapperConfiguration>().ToConstant(mapperConfiguration).InSingletonScope();

        // This teaches Ninject how to create automapper instances say if for instance
        // MyResolver has a constructor with a parameter that needs to be injected
        Bind<IMapper>().ToMethod(ctx =>
             new Mapper(mapperConfiguration, type => ctx.Kernel.Get(type)));
    }

    private MapperConfiguration CreateConfiguration()
    {
        var config = new MapperConfiguration(cfg =>
        {
            cfg.AddProfiles(new SampleProfile());
        });

        return config;
    }
}

public class SampleProfile : Profile
{
    public SomeProfile()
    {
        CreateMap<Foo, FooDto>();
    }
}

我总是在可执行程序的入口创建一个Ninject模块,所以在Windows中是这样的。但是我有点困惑,因为我的Windows项目没有“数据”引用(与实体)。所以我有几个问题:

  1. 我是否应该在WindowsService (主机)中添加对“数据”项目的引用,并在WindowsService中创建一个AutoMapper配置文件类?
  2. 我应该在逻辑类中定义AutoMapper配置文件类(它知道Dtos和实体),然后在WindowsService中引用逻辑,在哪里初始化模块?
  3. 我应该把AutoMapper档案放在别的地方吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-06 07:30:33

使用Java,使用此结构

数据(EF) -> Logic -> WCF Services / WCF Contracts -> WindowsService (主机)

我认为是一套不同的包/项目。因此,每个包/项目(按我的解释)如下:

  • 数据(EF):将实体映射为持久化,知道如何获取实体并将其转换为Dto (在这里,我将把告诉AutoMapper如何转换对象的配置/逻辑)
  • 逻辑:您的领域的逻辑所在,这应该是架构的核心,它应该(我要说)不知道其他的包/项目
  • WCF服务/ WCF合同:一组公开功能的接口
  • WindowsService (主机):接口的实现,因此其他包/项目之间的粘合代码就在这里。例如,这里我会将AutoMapper的概要文件放在这里。

WindowsService (主机)是一种基础结构层,所有的东西都放在一起。在这里,您需要引用要使用的每个包/项目(数据、逻辑、WCF服务/ WCF合同)。

票数 1
EN

Stack Overflow用户

发布于 2018-03-06 15:39:40

将配置文件放在逻辑中,因为这是您可以将其放在最上游的点,即逻辑有映射的两面(实体和Dtos)。如果您想像@Luca建议的那样保持逻辑的美观整洁,那么您可能会考虑将Dtos移动到WCF层(以及Profiles)。

您的windows服务肯定已经有了对此逻辑的引用。

这样,其他项目,一个可能使用这个逻辑的web应用程序也可以使用这个配置文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49124143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档