Projection de données dans le Cadre de l'Entité et Automapper

Je veux utiliser AutoMapper à la construction d'un ViewModel (aplatissement - projection de données) pour une utilisation dans un ASP.net MVC app.

var tmp = from x in db.Mailings select Mapper.Map<Mailing, MailingViewModel>(x);
return View(tmp.ToList());

Bien sûr, quand j'ai essayer l'exemple ci-dessus, j'ai l'EF erreur "LINQ to entities ne reconnaît pas la méthode..., et cette méthode ne peut pas être traduit dans un magasin d'expression".

Je sais que c'est possible de déplacer l' .ToList() avant le Automapper ne sa magie, mais puis-je récupérer tous les champs de la bd (et je n'ai besoin que de 3 de 20 champs)

Est-il possible de l'utiliser de façon propre. Nettoyer = tous les champs sont extraites de la base de données, mais uniquement les champs nécessaires pour le ViewModel. Est-il possible dans Automapper? Ou peut-être une autre bibliothèque? (sans le faire manuellement 😉 )

  • C'est assez "dangereux" pour utiliser AutoMapper dans les projections, parce que si vous avez un aplatissement de fonctionnement de la carte (target.Prop1 = source.Ref1.Prop1) vous pouvez créer un N+1 scénario.
InformationsquelleAutor Tom Deleu | 2011-03-22