AutoMapper.Mappeur.CreateMap<TSource,TDestination> () " est obsolète
Je cours Comme
class A
{
public int id {get; set;}
}
class B
{
public C c {get; set;}
}
class C
{
public int id {get; set;}
public string Name {get; set;}
}
Mon exigence est la carte d'id de catégorie A à l'id de la catégorie C.
Maintenant ce que je faisais jusqu'à maintenant était:
Mappeur.CreateMap().ForMember(des => des.C.Id src => src.MapFrom(x => x.id));
et ça marchait très bien.
Semble maintenant comme Auto mappeur a changé leur mise en œuvre. et je suis d'avertissement ci-dessous:
AutoMapper.Mappeur.CreateMap () " est obsolète: 'créer Dynamiquement des cartes sera supprimé dans la version 5.0. Utiliser un MapperConfiguration instance et de les stocker de manière statique en tant que de besoin, ou Mappeur.Initialiser. Utilisation CreateMapper pour créer un mappeur instance.
J'ai besoin de mapper des propriétés de classes qui a nom différent et de la structure. Toute aide sur ce.
commentaire devrait vous diriger dans la bonne direction, cependant, si vous avez encore des difficultés, vous pouvez installer une version précédente à l'aide de NuGet ou à l'aide de l'invite de commande: Install-Package AutoMapper -Version 4.1.0
OriginalL'auteur Sharad | 2016-04-04
Vous devez vous connecter pour publier un commentaire.
Précédemment
Le problème ici, c'est la cartographie de définitions sont statiques, défini une fois pour toute et réutilisés tout au long de la durée de vie de l'application. Avant de 3.3, vous auriez besoin de re-définir la correspondance, pour chaque demande, avec la valeur codée en dur. Et depuis le mappage de configuration est créé dans un emplacement distinct de notre cartographie de l'exécution, nous avons besoin d'introduire un paramètre d'exécution dans notre configuration, la fournir lors de l'exécution.
Ceci est accompli en deux parties: la cartographie de définition où nous créer un paramètre d'exécution, puis au moment de l'exécution, lorsque nous la fournir. Pour créer le mapping avec un paramètre d'exécution, nous “faux” une fermeture qui comprend un nom de variable locale:
Pour plus d'informations voir ce
Pour une ou plusieurs classes
Dans la cartographie des
Est vous de source et de destination de la classe est générique? Vous devez créer une carte pour chaque combinaison de la cartographie
non, je n'ai pas de classes génériques.
- Vous me montrer ce que l'ont fait. Montrer le code. Où voulez-vous créer des cartes et où en êtes-vous de la cartographie? Aussi j'ai amélioré ma réponse. Pensez-vous mettre en œuvre cette façon ?
problème, je suis confronté à est une fois que je mettre en œuvre pour les deux mappeur de classe pour laquelle j'ai différentes propriétés et de la structure et de l'utiliser de la manière qui vous a suggéré qu'il beau travail pour ce cas. J'ai ajouté ce code dans un .cs fichier dans app_start dossier. et de l'inscrire à l'GlobalConfiguration.Configurer() à l'intérieur mondiale.asax --> démarrage de l'application de la méthode. Mais si plus loin dans le code, si j'ai besoin de la Carte deux classes ayant les mêmes propriétés et la structure de cette partie ne fonctionne pas. qui travaillait jusqu'à présent par l'utilisation d'Mappeur.Carte(source, destination).
OriginalL'auteur Anik Saha
J'ai enfin trouvé la résolution. J'étais en train de faire:
Mapper.Initialize{ Mapping field from source to destination }
dans le App_start et l'ajout de ce fichier pour le mondial.asax--> Application_Start() --> GlobalConfiguration.
J'ai besoin d'ajouter une ligne supplémentaire à l'intérieur de mon Mappeur.Initialiser ce qui est
cfg.CreateMissingTypeMaps = true;
Maintenant ce code fonctionne pour une cartographie de l'endroit où deux classes n'ont pas la même structure et les noms de propriétés.
En dehors de cela, si nous avons besoin de mapper les propriétés de deux de classe avec la même structure que le code
Mapper.map(source, destination)
, ce qui n'était pas de travailler plus tôt.Laissez-moi savoir si quelqu'un a de la difficulté avec la solution. Merci à tous pour la réponse ci-dessus.
OriginalL'auteur Sharad
Une autre façon, qui semble un peu plus propre est de faire un MappingProfile classe qui hérite de la classe de AutoMapper
Puis vous initialisez le mapping avec
Mapper.Initialize(c => c.AddProfile<MappingProfile>());
dans votre code de démarrageQui vous permettra d'utiliser la cartographie n'importe où en appelant
OriginalL'auteur Leonard Lay