【问题标题】:In which layer should contain AutoMapper configurations?哪一层应该包含 AutoMapper 配置?
【发布时间】:2011-06-03 19:21:16
【问题描述】:

哪一层应该包含 AutoMapper 配置?

AutoMapper 用于将 ViewModel 映射到我的域实体。

我的应用中有三层:域、UI (MVC)、基础设施。

【问题讨论】:

    标签: c# .net automapper n-tier-architecture


    【解决方案1】:

    它应该位于它正在转换的最顶层。

    如果您在域和基础设施之间有映射器,那么它们应该存在于域中(假设使用基础设施)。

    如果您在 UI 和域之间有映射器,那么它们应该存在于 UI 中(假设使用域)。

    这意味着较低的层不知道或需要知道较高的层。

    【讨论】:

    • 我有 UI (ViewModels) 和 Domain 之间的映射。如果我放入 Infrastructure,如果我明天更改 UI,会更好吗?
    • @Acaz - 我不明白你的意思。
    • 把 automapper 配置放在基础设施中会更好,因为如果我更改 ui 层,地图会保留吗?
    • @Acaz - 你的基础设施不应该知道关于你的 UI 的任何事情,因为它应该是较低级别的(UI 可以引用基础设施,但引用不应该反过来发生)。
    • @Cromm - 可能,除非域是关于映射的;)
    【解决方案2】:

    将视图模型映射到域模型的地方通常是 MVC 架构中的控制器。现在你还没有对你的架构说太多,“UI”和“Infra”也不是很具体。

    不过,基本上,您只能在 DomainModel 和 ViewModel 都知道的地方调用 AutoMapper 配置。由于基础架构不应该依赖于 ViewModel,因此您应该映射到 ViewModel(无论如何都依赖于领域模型)或 UI 层(这将是 MVC 中的控制器)。

    【讨论】:

    • 你在这里假设 MVC,OP 没有提到它。
    • 现在是 ;) 另外,我的回答最终更通用,仅以 MVC 为例。我觉得具体化很有帮助,MVC 是最知名的模式之一。
    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多