我是 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 最好是保持实体和我的 View 之间的分离,并且复制我需要的字段的“逻辑”将位于 Controller 中。但我的另一部分认为创建 ViewModel 只是实体的近乎副本,所以看起来像是浪费时间?
我想正确地做到这一点,所以我想在这里问。提前致谢
最佳答案
Viewmodel 是最好的解决方案。
- 您可以添加属性(验证和其他)
- 您的 View 模型可以包含来自多个数据实体的数据
- 正如您所说,实体和 View 之间是分离的
一般方法在 Controller 中获取实体并使用一些映射器库(我推荐 emit mapper ) 将实体映射到您的 View 模型
关于c# - .Net MVC 实体和 ViewModel...相同还是独立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26157284/