我正在尝试通过使用 View 模型来清理 ASP.NET MVC 项目中的操作方法。目前,我的 View 模型包含可能与其他实体有关系的实体。例如,ContactViewModel 类可能有一个联系人,它可能有一个地址,两者都是单独的实体。要查询 Contact 对象的列表,我可能会执行如下操作。
IList<Contact> contacts;
using (IContactRepository repository = new ContactRepository())
{
contacts = repository.Fetch().ToList();
}
EditContactViewModel vm = new EditContactViewModel(contacts);
return View(vm);
这种方法会带来一些问题。例如,在 using 语句中查询存储库。当 View 呈现时,上下文已经超出范围,使得 View 无法查询与联系人关联的地址。我可以启用急切加载,但我不愿意。此外,我不喜欢实体模型渗透到我的 View 中(我觉得让我的 View 了解联系人和地址之间的关系是一个坏主意,但请随意不同意我的观点)
我考虑过创建一个包含联系人和地址实体属性的扩展类。然后,我可以将联系人和地址实体投影到新的扁平对象中。我对这种方法的担忧之一是我的操作方法可能会变得有点繁忙,并且我不认为 AutoMapper 能够将两个或多个对象映射到单一类型。
为了克服我的担忧,首选什么技术?
最佳答案
Automapper 将适合您的情况。你拥有的是一个对象图,一个事物有更多的东西,Automapper 可以很好地处理。
关于asp.net-mvc - ASP。 NET MVC : Mapping Entities to View Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269571/