我正在尝试通过使用视图模型来清理 ASP.NET MVC 项目中的操作方法。目前,我的视图模型包含可能与其他实体有关系的实体。例如,ContactViewModel 类可能有一个联系人,它可能有一个地址,两者都是独立的实体。要查询联系人对象列表,我可能会执行以下操作。
IList<Contact> contacts;
using (IContactRepository repository = new ContactRepository())
{
contacts = repository.Fetch().ToList();
}
EditContactViewModel vm = new EditContactViewModel(contacts);
return View(vm);
这种方法带来了一些问题。例如,在 using 语句中查询存储库。到视图呈现时,上下文已经超出范围,使得视图无法查询与联系人关联的地址。我可以启用急切加载,但我不想这样做。此外,我不喜欢实体模型渗入我的视图(我觉得让我的视图了解联系人和地址之间的关系是个坏主意,但请随意不同意我的观点)。
我考虑过创建一个包含来自联系人和地址实体的属性的增肥类。然后我可以将 Contact 和 Address 实体投影到我的新扁平对象中。我对这种方法的一个担忧是我的操作方法可能会有点忙,而且我认为AutoMapper 无法将两个或多个对象映射到单一类型。
什么技术是/是克服我的担忧的首选?