我应该使用EF在存储库模式中实现DTO吗?

She*_*Dev 9 asp.net-mvc entity-framework dto repository-pattern viewmodel

在我的项目中,我正在使用EF Code First方法.我有一个存储库层,服务层和表示层(ASP.NET MVC).我正在为每个视图使用专用的视图模型.

我感到困惑的是,我的服务应该将实体返回到控制器以将它们映射到视图模型,还是应该实现DTO并从服务返回它们?

所以问题是当流程类似于"EF - >存储库 - >服务 - > UI"时,数据转换将是什么."实体 - > DTO - > Viewmodel"或"实体 - > Viewmodel"?

看起来如果我使用DTO,它们会有点重复实体.

我正在努力遵循最佳做法.

谢谢.

Ken*_*eth 3

这很难说,因为这完全取决于您的应用程序及其复杂性。如果您有很多转换,我会建议使用 DTO,如果不是只是从实体转换到 ViewModel。

一般来说,我会从尽可能少的转换开始。当事情变得复杂时,您仍然可以在中间添加另一层。请记住,添加抽象层比删除抽象层更容易。