【发布时间】:2015-07-08 18:03:48
【问题描述】:
我已经开始使用 MVC 有一段时间了,我正在学习不同的方法来处理不同的场景。可以有不同的方法来处理一个场景,并且哪个更有效和更好,这可能是相当有争议的。
我的困惑与实体模型和视图模型的使用有关。我为每个数据库实体创建了单独的实体模型,还为每个视图创建了单独的视图模型。现在我有了一个简单的视图,上面有文本框、单选按钮、复选框和下拉列表。我在视图上有两种方式的数据绑定,我使用同一个视图来创建新记录和编辑现有记录。
我的困惑是我正在从数据库中检索实体模型并从实体模型中填充 ViewModel 的每个字段,然后将 ViewMoel 传递给模型。现在必须为每个字段手动完成。那么是否有某种方式可以在运行时自动映射 ViewModel 和实体模型?例如,在一个简单的视图中,我正在执行以下操作,
List<User> UserList = db.Users.ToList();
List<UserViewModel> UsersViewModel = new List<UserViewModel>();
foreach (User user in UserList)
{
UserViewModel model = new UserViewModel();
model.FirstName = user.FirstName;
model.LastName = user.LastName;
model.DOB = user.DOB;
model.Addresses = user.Addresses;
}
当手动填充 ViewModel 时,我将其传递给视图。同样为了将记录保存到数据库,我做相反的事情并从 ViewModel 填充实体模型。对我来说,必须有一些更有效、更短的方法来做我正在做的事情。我在MVC4 C# Populating data in a viewmodel from database 上检查了一个类似的问题,但它没有回答我的问题,而是解决了一些错误。
【问题讨论】:
标签: asp.net-mvc-5 entity-framework-6