【发布时间】:2016-01-15 03:47:03
【问题描述】:
我仍在学习 MVC,最近有人建议我使用 AutoMapper 来映射我的 ViewModel。所以,我开始了一个测试,但我不了解如何映射两个实体,也找不到示例。
我有一个 Person 表和一个 Address 表。我想将两者组合成一个 ViewModel 以传递给我的 View。查看示例,他们总是展示如何映射一个实体而不是两个实体。
在下面的代码中,我可以看到我的 currentPerson 和 currentAddress 对象都使用调试器填充了数据,但是我的 currentMember ViewModel 只有 Person 数据。这是有道理的,因为我只在 Person 上使用 Mapper.Map 但我如何告诉 currentMember 也映射地址?
public ActionResult Edit(int id = 0)
{
using (DataContext db = new DataContext())
{
Person currentPerson = db.Person.Find(id);
Address currentAddress = db.Address.Single(a => a.PID == id);
AutoMapper.Mapper.CreateMap<Person, AdminViewModel>();
AutoMapper.Mapper.CreateMap<Address, AdminViewModel>();
MemberViewModel currentMember = AutoMapper.Mapper.Map<AdminViewModel>(currentPerson);
return View(currentMember);
}
}
【问题讨论】:
-
如何在
AdminViewModel中创建两个属性,然后分别映射它们? -
这就是我最初所做的事情,当时有人建议我使用 Automapper 来不必手动映射属性。
-
是的,老实说,这就是我一直在做的事情。当您单独映射它们时,手动将它们分配给视图模型
-
人是否有指向地址的导航属性?在通话中加载它们会更有意义。这样,您就可以使用 AutoMapper 进行映射。
标签: c# asp.net-mvc entity-framework