我是新来的asp.net MVC和我已经创建了一个项目使用实体框架代码的第一种方法。我已将POCO对象放入一个名为实体的单独类库中。.Net MVC实体和视图模型...相同或独立?
现在我想从我的服务类获取一些数据,它返回一个实体并将其输出到视图。这里是一些很基本的代码
// 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只是实体的一个近似副本,所以看起来像浪费时间?
我想正确地做,所以我想在这里问。在此先感谢
创建单独的视图模型。在映射不是一对一之前不会很久。另外请记住,如果您直接绑定到实体,则任何用户都可以通过提交正确的POST值来更改任何属性。 – 2014-10-02 08:52:39
[This SO answer](http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc)给出了一些很好的理由,为什么视图模型是一个很好的方法。另外[this](http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx)和[this](http://www.mikesdotnetting。 com/Article/188/View-Model-Design-and-Use-In-Razor-Views) – 2014-10-02 08:52:41