将域模型映射到视图模型

时间:2012-07-27 02:12:19

标签: asp.net-mvc entity-framework automapper

我从一个非常类似于Domain Entities, DTO, and View Models的点开始。

建议使用DTO在域模型和MVC的ViewModel之间进行映射似乎是一致的期望。我寻求如何将域模型(基于实体框架的项目)桥接到WebAPI mvc项目的详细信息。

我开始使用一个简单的POCO项目(由EF PowerTools生成来反向设计我现有的数据库),我想连接到MVC4 WebAPI项目。

我希望随着我的解决方案的发展,我将在基线POCO项目中添加业务逻辑,这可能是这个问题的症结所在。将POCO转换为可映射到MVC项目的业务逻辑。

究竟如何将这些项目连接在一起,以便我可以开始在知道EF项目实体的MVC项目中创建控制器? Automapper?我们可以指向使用Automapper的这个特定功能的帖子/文档吗?

1 个答案:

答案 0 :(得分:1)

您不希望控制器知道EF实体 - 这就是全部要点。 :)

您自己说DTO应该用于将您的域映射到您的视图模型,然后您问“我如何使用mvc控制器桥接我的域模型?”。你已经用DTO解决了这个问题!

DTO充当复杂业务对象和用于显示特定视图的模型之间的传输层。这两者都有特殊要求,并不严格地与“仅数据”相关 - 因此使用DTO将使您更加分离和分离关注点。

如果不从视图模型中分离域,则将强制您在视图模型代码中直接引用EF对象,这会在“链上”暴露不必要的数据和函数。

现在,如果您使用WebAPI作为发送数据的方式,那么我认为您通常可以放弃发送DTO,因为WebAPI数据通常不会实现视图模型逻辑。但YMMV当然取决于您打算如何使用控制器。

对于AutoMapper我会说最好从他们自己的文档开始(他们甚至在其中使用DTO示例):http://github.com/AutoMapper/AutoMapper/wiki/Getting-started