首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >域模型到ViewModel的映射

域模型到ViewModel的映射
EN

Software Engineering用户
提问于 2015-12-29 20:22:18
回答 1查看 11.4K关注 0票数 5

我有一个Asp.net MVC5应用程序,结构如下:

核心

  1. 领域项目

基础设施

  1. DAL项目
  2. 实用程序

用户界面

  1. UI项目(目前包含ViewModel,可能会将其放入单独的项目中,因为我预计应用程序将随着时间的推移而增长)

它通过工作单元和一个注入了统一的通用存储库来工作。

我的问题是:

我严格地试图在UI视图中使用ViewModels,我应该将映射域模型<=> ViewModel的逻辑放在哪里?

我应该在Controller中这样做,还是应该将映射逻辑放入ViewModel本身并创建方法ViewModel.FromDomainObject(DomainObject domainObject)或ViewModel.ToDomainObject(ViewModel viewModel)等等?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-12-30 02:20:34

继续将实现映射到控制器之外。相反,在控制器中调用负责映射的东西。

代码语言:javascript
复制
public ActionResult FetchSomething()
{
    var thingMapper = new ThingMapper();
    var viewModel = thingMapper.ToViewModel(service.FetchSomething());
    return View(viewModel);
}

当然,如果您的ViewModel只是一两个属性,则可以跳过映射器。

代码语言:javascript
复制
public ActionResult FetchSomething()
{
    var thing = service.FetchSomething();
    var viewModel = new ThingViewModel { Prop1 = thing.Prop1 };
    return View(viewModel);
}

幸运的是,AutoMapper可以帮助您在不编写自定义映射器的情况下映射对象。

我不会将映射实现存储在ViewModels本身中。当一个ViewModel可以表示来自多个源的数据时,这会变得很尴尬。对我的口味来说,它也把责任混为一谈。

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

https://softwareengineering.stackexchange.com/questions/306116

复制
相关文章

相似问题

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