我目前有一个基于Entity Framework v4实体的存储库(已实现CRUD和GET操作)。我正在为这些实体创建相应的视图模型。我应该在哪里放置转换/映射?在控制器中或修改存储库以在其方法中执行映射并返回(或接受)View Model类型的对象?
我应该这样做吗
public ActionResult Index()
{
var person = new PersonRepository().Get();
var personViewModel = new PersonViewModel();
personViewModel.InjectFrom(person)
.InjectFrom<CountryToLookup>(person);
return View(personViewModel);
}
或者
public ActionResult Index()
{
var personViewModel = new PersonRepository().Get(); // returns object of type PersonViewModel
// and move this to repository
// var personViewModel = new PersonViewModel();
// personViewModel.InjectFrom(person)
// .InjectFrom<CountryToLookup>(person);
return View(personViewModel);
}
答案 0 :(得分:3)
我会将它解压缩到控制器上的私有方法中,或者将其放入服务类中,如果它将在其他地方重用。
我不认为把它放在存储库上是个好主意,除非它不是通用的。应该是什么,因为在我看来,通用存储库摇滚!
答案 1 :(得分:1)
我绝不会将转换代码放入您的存储库。
混合两者只是把你所有细心的脱钩。
MVC的书籍定义强烈暗示应该在控制器内完成转换:
“控制器接收输入并通过对模型对象进行调用来启动响应。控制器接受来自用户的输入并指示模型和视口基于该输入执行操作。”