3

我从一个非常相似的点开始:Domain Entities、DTO 和 View Models

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

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

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

究竟如何将这些项目连接在一起,以便我可以开始在 MVC 项目中创建了解 EF 项目实体的控制器?自动映射器?我们能否指出使用 Automapper 的这一特定功能的帖子/文档?

4

1 回答 1

1

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

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

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

如果您不将域与视图模型分离,您将被迫在视图模型代码中直接引用您的 EF 对象,这会“向上”公开不必要的数据和函数。

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

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

于 2012-07-27T08:26:53.780 回答