À l'aide de Automapper de mettre à jour une Entité existante POCO
Je suis en utilisant EF4 DbContext de fournir un modèle pour ASP.NET MVC app. J'utilise Viewmodel pour fournir des données aux points de vue et Automapper pour effectuer le mappage entre les EF Poco et le Viewmodel. Automapper fait un excellent travail, mais je ne suis pas clair la meilleure façon de l'utiliser après le ViewModel est affecté au contrôleur pour effectuer la mise à jour.
Mon idée est d'obtenir POCO objet à l'aide d'une clé contenue dans le ViewModel. Je veux utiliser Automapper pour mettre à jour le POCO avec les données de la ViewModel:
[HttpPost]
public ActionResult Edit(PatientView viewModel)
{
Patient patient = db.Patients.Find(viewModel.Id);
patient = Mapper.Map<ViewModel, Patient>(viewModel, patient);
...
db.SaveChanges();
return RedirectToAction("Index");
}
Deux questions:
- La méthode Find() retourne une Procuration plutôt que de un POCO qui provoque Automapper à se plaindre. Comment puis-je obtenir le POCO au lieu de le Proxy?
- Est cette meilleure pratique pour effectuer une mise à jour?
Cela peut vous aider: stackoverflow.com/questions/6156538/...
Je pense que c'est OK, élégant même. Vous d'utiliser le bon de surcharge de
Merci @Gert Arnold, a augmenté ma confiance dans cette approche.
Je pense que c'est OK, élégant même. Vous d'utiliser le bon de surcharge de
Mapper.Map
.Merci @Gert Arnold, a augmenté ma confiance dans cette approche.
OriginalL'auteur Paul Taylor | 2012-11-09
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez Automapper comme ça, elle renvoie un nouveau Patient de l'objet et les références à la enity cadre graphique ne sont pas conservés. Vous avez à l'utiliser comme ceci:
OriginalL'auteur Marius Stănescu
Il semble y avoir deux approches pour traiter le EF proxy question:
Note. Ce dernier est commentée avec "de place pour l'amélioration. Voir: Automapper : cartographie question de l'héritage et de la classe de base abstraite sur les collections avec Entity Framework 4 Proxy Pocos".
OriginalL'auteur Paul Taylor