Objets AutoMapper 3.1.1 et Proxy Entity Framework 6.1

J’ai réalisé que cela avait déjà été demandé, mais les solutions que j’ai lues ne semblent pas faire de différence jusqu’à présent. J’utilise Entity Framework 6.1 et AutoMapper 3.1.1. Prenant les objects suivants: Company et CompanyListItem ; J’essaye ceci:

 Mapper.Configure(); 

Eh bien, lorsque j’essaie de faire le mappage réel, il se bloque et est gravé, à l’exception du fait qu’aucun mappage n’est défini. Je sais que cela est dû aux objects proxy créés par Entity Framework. Une solution que j’ai vue jusqu’à présent consiste à appeler une version surchargée de la méthode Map:

 IQueryable companies = CompaniesService.FindCompanies(); Mapper.Map(companies, typeof(Company[]), typeof(CompanyListItem[])); 

Et ça ne marche toujours pas et me crie dessus.

J’ai aussi lu d’autres publications qui corrigent ce problème depuis la version 2.2.1? Est-ce différent ou a-t-il régressé? J’apprécierais les suggestions.

Vous utilisez mal Automapper, vous devez utiliser l’ espace de noms QueryableExtensions , votre code doit donc être

 IQueryable companies = CompaniesService.FindCompanies(); CompanyListItem[] results = companies.Project().To().ToArray(); 

Aussi, si vous alliez le faire dans l’autre sens, vous aviez encore Mapper.Map mal, cela aurait dû être

 IQueryable companies = CompaniesService.FindCompanies(); CompanyListItem[] result = Mapper.Map,CompanyListItem[]>(companies); 

mais je recommande quand même de faire la .Project().To() , car elle exécutera le serveur de mappage au lieu du client, de sorte que vous aurez potentiellement moins de données à envoyer par le réseau.