Comment utiliser automapper pour mettre à jour les valeurs de propriétés d'un autre objet sans en créer un nouveau?Automapper: Mettre à jour les valeurs de propriété sans créer un nouvel objet
Répondre
Utilisez la surcharge qui prend la destination existante:
Mapper.Map<Source, Destination>(source, destination);
Oui, il retourne l'objet de destination, mais c'est juste pour d'autres scénarios obscurs. C'est le même objet.
Pour que cela fonctionne, vous devez créer CreateMap pour les types de source et de destination, même s'ils sont du même type. Cela signifie que si vous voulez Mapper.Map<User, User>(user1, user2);
Vous devez créer cette carte comme Mapper.Create<User, User>()
Ha! Je viens de trouver la même chose et ajouté un commentaire à la réponse acceptée. IMHO la réponse acceptée sans votre explication n'est pas complète, mais après mon commentaire, il pourrait être, enfin :) –
Ceci est un excellent ajout. Cependant, la question initiale ne mentionnait pas les types de la source et de la destination et n'exigeait pas qu'ils soient du même type. – jpaugh
- 1. LINQ: sélectionnez un objet, mais modifier certaines propriétés sans créer un nouvel objet
- 2. Créer un nouvel objet de classe
- 3. NHibernate essayant de mettre à jour au lieu d'insérer un nouvel objet
- 4. Mettre à jour WPF ListBoxItem sans ListBox.Items.Refresh()?
- 5. Mettre à jour l'entité via un nouvel objet dans LINQ to SQL
- 6. comment créer un nouvel objet AJAX à l'aide du prototype
- 7. créer un objet avec ses valeurs de propriété à partir d'un fichier plat, besoin d'idées d'implémentation
- 8. Créer/mettre à jour un sous-objet dans la boîte de dialogue d'édition de Django
- 9. Impossible de créer un nouvel objet dans ActiveDirectory
- 10. Comment créer un objet avec plusieurs valeurs?
- 11. objet coutume de mettre à jour
- 12. Comment mettre à jour l'objet sans hypothèses, les données
- 13. Wordpress: mettre à jour toutes les valeurs de champs?
- 14. UpdatePanel imbriqué - Mettre à jour ParentPanneau Parent sans mettre à jour les UpdatePanels enfants?
- 15. Mettre à jour la propriété sur le modèle de vue sans code derrière?
- 16. Mappage de liste à objet avec AutoMapper
- 17. Comment puis-je mettre à jour la propriété managedBy sur un objet ordinateur dans Active Directory?
- 18. Liaison de données à un objet - comment mettre à jour un objet/une liaison?
- 19. TSQL: Mettre à jour les valeurs en utilisant l'instruction With?
- 20. Créer un nouvel objet grand Assistant: ASp.net MVC
- 21. Mise à jour des valeurs de propriété parent dans SQL
- 22. JavaScript pour mettre à jour les valeurs dans MSCRM
- 23. Comment mettre à jour un objet en utilisant Entity Framework
- 24. Insérer ou mettre à jour sans boucle?
- 25. AutoMapper Comment mapper un objet imbriqué à partir d'un ObjectId
- 26. Mettre à jour les cookies sans rafraîchir la page (Asp.net)
- 27. Mise à jour des valeurs Combobox sans reliaison
- 28. Comment mettre à jour une propriété imbriquée avec Entity Framework
- 29. Comment mettre à jour des objets entité sans les supprimer?
- 30. Ajouter un service Web WCF sans mettre à jour Web.config
Merci, Jimmy ... J'ai fait exprès évitaient AutoMapper parce que j'avais peur de la courbe d'apprentissage impact sur mon emploi du temps. Je suis officiellement désolé d'être resté si longtemps à l'écart ... c'est beaucoup plus facile que je ne le pensais au départ. –
Automapper doit être l'une des bibliothèques les plus utiles sur le marché. Moi aussi, je l'ai évité pendant longtemps, beaucoup trop longtemps. J'ai commencé à l'utiliser aujourd'hui et je suis très surpris de la facilité d'utilisation. – mcottingham
Ne fonctionne pas pour moi. J'essaye de mapper au même type, mais c'est un nouvel objet retourné. Utilisateur u1, u3 = nouvel utilisateur(); u1 = new Utilisateur { Id = 1, NickName = "vami" }; Utilisateur u4 = Mapper.Map (u1, u3); Assert.AreEqual (u1.Id, u3.Id); Assert.AreEqual (u1.NickName, u3.NickName); –