将领域模型映射到视图模型

3

我从以下类似的起点开始:Domain Entities, DTO, and View Models

建议使用DTO在域模型和MVC的ViewModel之间进行映射,这似乎是一致的期望。我想了解如何将域模型(基于Entity Framework的项目)与WebAPI mvc项目桥接。

我从一个简单的POCO项目开始(由EF PowerTools生成以反向工程我的现有数据库),我想将其连接到一个MVC4 WebAPI项目中。

我希望随着解决方案的演变,我将向基线POCO项目添加业务逻辑,也许这是这个问题的关键所在。将POCO转换为可以映射到MVC项目的内容的业务逻辑。

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

1个回答

1

你不希望控制器知道 EF 实体 - 这正是这个方案的整个意义。 :)

你自己说 DTO 应该用于将你的领域映射到视图模型,然后你问“如何将我的领域模型与 MVC 控制器连接起来?”你已经回答了这个问题 - 使用 DTO!

DTO 作为复杂业务对象和用于显示特定视图的模型之间的传输层。两者都有特殊需求,不严格涉及“仅数据” - 因此使用 DTO 将为您提供更大的解耦和关注点分离。

如果不将领域与视图模型解耦,则将被迫在视图模型代码中直接引用 EF 对象,从而暴露不必要的数据和函数 "up the chain"。

现在,如果您使用 WebAPI 作为一种发送数据的方式,我认为您通常可以使用发送 DTO,因为 WebAPI 数据通常不会实施视图模型逻辑。但当然,这取决于您计划如何使用您的控制器。

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


非常感谢 - 您的观点帮助我增加了对此的理解,并且我已经超越了“Hello, World”级别。非常感谢。 - justSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接