【发布时间】:2012-02-27 13:11:19
【问题描述】:
我有一个大致如下组织的 MVC 项目:
- 项目 1:MVC 应用(ViewModels、Controller、Actions、UI-stuff)
- 项目 2:域模型(域类、行为、数据访问(持久层、存储库)
我的问题是在哪里进行映射和数据访问(如何组织代码)。
definition(据我了解)控制器应将请求映射到正确的视图并尽可能瘦。
我在基本映射上使用 Automapper,并在控制器中执行此操作,但对于更复杂的映射,我发现自己进行映射更容易。
我主要有两个地方放这个代码:
- 在控制器中:
这很容易变得非常混乱,特别是如果我需要从多个存储库中获取信息、创建选择列表等等。
- 在 ViewModel 中:
这感觉更好,但我不喜欢在模型中实例化 Repositories 和 UnitOfWork。不知道是否属于那里。
现在我正在做一些介于两者之间的事情:
我让 ViewModel 将所需的存储库作为构造函数 参数,然后我在那里进行映射。我实例化 控制器中的 Repositories/UnitOfWork 并将其传入。好的 事情是我可以为存储库使用一个接口,所以 ViewModel 不需要关心实现。
但是,在网络上的示例中,我总是在控制器中看到所有这些代码,这让我想知道 - 正确的做法是什么?
【问题讨论】:
标签: asp.net-mvc model controller mapping