2010-06-09 16 views
5

Başlık, hemen hemen her şeyi açıklıyor, projemde çalışmaya çalıştığım son şey. Böyle bir işlevi içeren bir Hizmet Kitaplığı ile yapılandırılmıştır.ASP.Net MVC Varlıklardan ViewModels'e nerede dönüşüm gerçekleştiriyorsunuz?

 /// <summary> 
     /// Returns a single category based on the specified ID. 
     /// </summary> 
     public Category GetCategory(int CategoryID) 
     { 
      var RetVal = _session.Single<Category>(x => x.ID == CategoryID); 
      return RetVal; 
     } 

Şimdi Kategori biz CategoryViewModel bu dönüştürmek gerekir (Biz Entity Framework kullanan) bir varlık olduğunu.

İnsanlar bunu nasıl yapılandıracak? Hizmet işlevinin bir CategoryViewModel döndürdüğünden emin misiniz? Denetleyicinin verileri servisten almasını sağlayın ve sonra bir görünüm modeline uydurmak için başka bir işlev çağırın. İlgili görünümü kuvvetle IEnumerable<UserViewModel> için yazılan bu durumda

[AutoMap(typeof(IEnumerable<User>), typeof(IEnumerable<UserViewModel>))] 
public ActionResult Index() 
{ 
    // return all users 
    IEnumerable<User> users = Repository.GetUsers(); 
    return View(users); 
} 

:

cevap

3

İşte bir yazdığım bir blog post dan alıntı. Varlıklar ve görünüm modelleri arasında dönüşüm kuralları tanımlamak için AutoMapper10'u kullanır. [AutoMap] özniteliğine gelince, görüntüye geçirilen modeli inceleyen ve görünümü yalnızca görünüm modeline sahip olacak şekilde uygun dönüşümü uygulayan özel bir eylem filtresi.

+0

Bunun için çok zarif bir çözüm +1! Yansımanın kullanımından dolayı AutoMapper'a karşı ihtiyatlıyım. Sitenin saniyede 3 istek alması durumunda AutoMapper endişelenecek bir şey midir? – LiamB

+0

Jimmy Bogard, performansı iyileştiren bazı harika optimizasyonlar yaptı. Bir blog yazısı yazdı: http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/08/04/analyzing-automapper-performance.aspx (şu anda blogunu açarken bir sorun var, bu yüzden önbelleğe alınmış sürüm: http://webcache.googleusercontent.com/search?q=cache:y1UTqDky3wcJ:www.lostechies.com/blogs/jimmy_bogard/archive/2009/08/04/analyzing-automapper-performance.aspx+automapper+reflection + performance & cd = 1 & hl = tr & ct = clnk) Ben şahsen AutoMapper'ı üretimde çok kullanıyorum ve onunla hiçbir performans sorunu yaşamadım. –

+0

Teşekkürler :) - Örneğinizde "IModelMapperController" ve "controller.ModelMapper" nereden geliyor? – LiamB