J'essaie de nettoyer mes méthodes d'action dans un projet ASP.NET MVC en utilisant des modèles de vue. Actuellement, mes modèles de vue contiennent des entités qui pourraient avoir des relations avec d'autres entités. Par exemple, la classe ContactViewModel peut avoir un contact, qui peut avoir une adresse, les deux étant des entités distinctes. Pour rechercher une liste d'objets Contact, je pourrais faire quelque chose comme ceci.ASP. NET MVC: Mappage d'entités pour afficher le modèle
IList<Contact> contacts;
using (IContactRepository repository = new ContactRepository())
{
contacts = repository.Fetch().ToList();
}
EditContactViewModel vm = new EditContactViewModel(contacts);
return View(vm);
Cette méthode pose quelques problèmes. Par exemple, le référentiel est interrogé dans une instruction using. Au moment où la vue s'affiche, le contexte est hors de portée, ce qui empêche la vue d'interroger l'adresse associée au contact. Je pourrais permettre un chargement passionné, mais je préférerais ne pas le faire. En outre, je n'aime pas que le modèle d'entité ait saigné à mon sens (je pense que c'est une mauvaise idée pour mon View d'avoir connaissance de la relation entre Contact et Adresse, mais n'hésitez pas à ne pas être d'accord avec moi).
J'ai envisagé de créer une classe grossie contenant des propriétés des entités Contact et Adresse. Je pourrais alors projeter les entités Contact et Adresse dans mon nouvel objet aplati. Une de mes préoccupations avec cette approche est que mes méthodes d'action peuvent être un peu occupé et je ne sais pas pense AutoMapper est capable de mapper deux ou plusieurs objets dans un seul type.
Quelle technique est/est préférée pour surmonter mes préoccupations?
Très cool. Je suis encore nouveau sur AutoMapper, donc je ne savais même pas qu'il pouvait cartographier, comme ça. Merci beaucoup. – senfo