asp.net-mvc - ASP。 NET MVC : Mapping Entities to View Model

标签 asp.net-mvc design-patterns methodology automapper

我正在尝试通过使用 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/

相关文章:

jquery - jquery #find 关于部分回发的问题

php - 在实现其主要功能后在 Web 应用程序中实现安全性是否合理?

agile - 敏捷在哪些情况下是不合适的?

java - 关于 Java 的方法论和正确实践

asp.net-mvc - mvc4 和 EF 中的 Html.EditorFor 和多行文本框

asp.net-mvc - Azure .Net Framework 4.8 向后兼容性

c# - Hangfire 具有水平缩放功能

oop - 策略模式是否违反单一职责原则?

c++ - 避免虚函数的标准方法

oop - 使用复数来命名集合是一种好习惯吗?