.Net MVC实体和视图模型..相同或分离

本文关键字:分离 模型 视图 MVC 实体 Net | 更新日期: 2023-09-27 18:25:28

我是asp.net MVC的新手,我使用实体框架代码优先的方法创建了一个项目。我已经将我的POCO对象放入一个名为Entities的单独类库中。

现在我想从我的服务类中获取一些数据,它返回一个实体并将其输出到视图。这是一些非常基本的代码

// 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推送到视图中,还是应该创建一个单独的ViewModel?我有一部分认为,创建一个单独的ViewModel最好能保持实体和我的视图之间的分离,而且复制我需要的字段的"逻辑"也会在控制器中。但我的另一部分认为,创建ViewModel只是实体的一个近似副本,所以看起来像是在浪费时间?

我想正确地做,所以我想我会在这里问。提前感谢

.Net MVC实体和视图模型..相同或分离

Viewmodel是最佳解决方案。

  1. 您可以放置属性(验证和其他)
  2. 视图模型可以包含来自多个数据实体的数据
  3. 正如您所说,实体和视图之间存在分离

一般方法是在控制器中获取实体并使用一些映射器库(我建议使用emit映射器)将实体映射到视图模型