La cartographie du modèle de domaine de visualiser le modèle via AutoMapper ou pas

Je veux utiliser un modèle d'affichage pour l'affichage insted de modèle de domaine. Et je veux personnaliser une propriété à afficher, comment dois-je faire? Et est-ce une bonne pratique d'utiliser AutoMapper pour l'affichage?

Ci-dessous l'exemple de code:

public class BookController : BaseController
    {
        private IBookService bookService;

        public BookController(IBookService bookService)
        {
            this.bookService = bookService;
        }

        public ActionResult Details(int id)
        {
            var book = bookService.GetBookById(id);

            return View(Mapper.Map<BookView>(book));
        }
}

    public class Book 
    {        
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
    }

    public class BookView
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

Si j'utilise un autre moyen, je peux personnaliser la propriété, comme ci-dessous:

  public ActionResult Details(int id)
        {
            var book = bookService.GetBookById(id);

            return View(new BookView(book));
        }

    public class BookView
    {
       public BookView(Book book){
         Name = book.Name +" Decorated";
       }
        public int Id { get; set; }
        public string Name { get; set; }
    }

Comment dois-je faire? Et est-ce une bonne pratique d'utiliser AutoMapper pour l'affichage?

Mise à jour

Il semble à l'aide de automapper dans le scénario ci-dessous est plus approprié. Par exemple, l'établissement d'un modèle de vue de modèle de domaine comme ci-dessous. Les opinions?

  [HttpPost]
    public ActionResult Create(BookView bookView)
    {
        try
        {
            var book = Mapper.Map<Book>(bookView);  //this is wrong

            bookService.SaveOrUpdate(book);

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Mise à jour 2

Pour le complexe d'affichage personnalisé via le modèle de vue, je ne veux pas utiliser automapper à l'affichage de la carte logique, en supposant automapper pouvez carte. Parce qu'il mêle à des fins différentes. Par exemple:

Mapper.CreateMap<Book, BookView>()
    .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name + " this is for display purpose"));

Cependant, l'utilisation du manuel de cartographie comme ci-dessous semble intuitif.

 public BookView(Book book){
    //mapping here
}

Mise à jour 3

Citation de Jimmy Bogard:

Je pense que l'utilisation AutoMapper parce que vous ne voulez pas utiliser le “=”
l'opérateur est un peu paresseux. Au lieu de cela, nous l'utilisons pour les aplatir et les remodeler,
l'optimisation pour le type de destination de l'environnement. Souvenez-vous, mes
motivation initiale de AutoMapper était:

Activer la protection de la couche domaine à partir d'autres couches de la cartographie de
Otd

Merci @AndrewWhitaker pour le lien

Par mise à jour 2, comment est-il mélange des fins différentes? N'est-ce pas le but de ce Dernier pour afficher un modèle de domaine? Automapper est juste un véhicule pour se qui fait.
Il se compare à d'autres mappages, par exemple domaine de dto, ce qui n'est pas de l'affichage, et plus susceptibles de les nettoyer.
Vous devez créer un entièrement différents pour la cartographie de domaine --> DTO. Aussi, vous ne devez pas utiliser AutoMapper à la carte à partir de quelque chose DE domaine.

OriginalL'auteur Pingpong | 2013-05-13