我是asp.net MVC的新手,我使用Entity Framework代码第一种方法创建了一个项目。我已将我的POCO对象放入一个名为Entities的单独类库中。
现在我想从我的服务类中获取一些数据,它返回一个实体并将其输出到View。这是一些非常基本的代码
// in POCO library
public class MyEntity() {
public int Id { get; set; }
public String Name { get; set; }
}
// in service library
public class EntityService() {
public MyEntity Get(int id) {
return new MyEntity() { Id=1, Name="This is my entity name" };
}
}
// controller in asp.net MVC web application
public MyController() : Controller
{
private EntityService _service;
public MyController(EntityService service) {
_service = service;
}
public ActionResult Index()
{
MyEntity entity = _service.Get(1);
return View(entity);
}
}
现在我应该将MyEntity推送到View,还是应该创建一个单独的ViewModel?我的一部分认为创建一个单独的ViewModel最好是保持实体和我的视图之间的分离,并且复制我需要的字段的“逻辑”将在控制器中。但我的另一部分认为创建ViewModel只是实体的近似副本所以似乎浪费时间?
我想正确地做,所以我想在这里问。提前致谢
答案 0 :(得分:3)
Viewmodel是最佳解决方案。
一般方法获取控制器中的实体并使用一些映射器库(我推荐emit mapper) 将实体映射到您的viewmodel