J'ai quelque chose comme ça J'ai un domaine comme celui-ci p> maintenant je dois faire la cartographie. p> // dans mon contrôleur p> Ceci ne liera rien puisqu'il ne pouvait pas comprendre comment mettre le productidit puisque
est p> Ma carte est comme celle-ci p> i obtenir cette erreur p> expression 'dest =>
Convertir (Dest.Product.SelectedProductid 'doit
résoudre au membre de niveau supérieur. Paramètre
Nom: LambdaExpression p>
BlockQuote> Je ne sais pas comment faire cela. p> p>
4 Réponses :
L'erreur que vous obtenez est parce que vous ne pouvez pas déclarer que les déclarations de mappage de plus d'un niveau profond dans votre graphique de votre objet. P>
Parce que vous avez seulement posté une propriété, c'est difficile pour moi de vous donner les codes qui feront ce travail. Une option consiste à modifier votre propriété ViewModel sur MyTestStestid et les conventions vont automatiquement en prendre à ce sujet. P>
J'ai ajouté d'autres propriétés.
Une dernière chose que j'ai changée mes affaires pour essayer de le récupérer par les conventions, mais cela ne fonctionne pas. J'ai changé SelectProductDID sur ProductID et ProductID (dans mon domaine) à ID. Toujours ne lie pas.
Pour mapper des structures imbriquées, il vous suffit de créer un nouvel objet dans l'argument fort> MapFrom fort>
Exemple strong> P> Mappage: P> public class Source
{
public int Id { get; set; }
}
public class Destination
{
public NestedType MyNestedType { get; set; }
}
public class NestedType
{
public int Id { get; set; }
}
Vous pouvez utiliser le résolveur.
Créer une classe de résolution comme celle-ci: p> et utilisez-le comme ça: p> Mapper.CreateMap<ProductViewModel, Store>()
.ForMember(dest => dest.SelectedProductId, opt => opt.ResolveUsing<StoreResolver >());
La réponse correcte donnée par Allrameest sur cette question devrait aider: Mapping de niveau profond
C'est ce dont vous avez besoin: p> Remarque: vous devez essayer de vous éloigner de mapper.createmap à ce stade, il est obsolète et ne sera pas pris en charge bientôt. p> p>
Pouvez-vous réparer votre code? Vous avez beaucoup d'erreurs là-bas. Par exemple,
Classe publique MyTest () Code> n'est pas une déclaration de classe valide et
public myTest () {obtenir; ensemble;} code> n'est pas une déclaration de propriété valide.
Êtes-vous intentionnellement cartographier de votre modèle de vue à votre classe de domaine? Ce n'est pas recommandé par les mecs automatifers.
@Brian - ya. Pourquoi pas? Je veux dire que je pensais que c'est tout le point de la mappeuse automatique. Sinon, je dois faire de toutes les choses à la main, vaincre le but du mapper automatique. Ensuite, je pourrais aussi bien que la carte du domaine pour afficher le modèle à la main aussi.
Voir ce Alors question a> sur la mappage du modèle de vue retour au domaine. Je ne sais pas non plus pourquoi vous voudriez mapper un produitView dans un magasin. Pourquoi ne pas simplement la mapper sur un produit réel. C'est un bon exemple de la raison pour laquelle FOWNAPPER ne correspond pas au domaine bien. Tout le monde s'attend à ce qu'il fonctionne différemment. La cartographie du domaine à viewModel est beaucoup plus simple car ils ont tendance à ne pas avoir de nombreux niveaux d'objets imbriqués.