نکته‌ای در استفاده از AutoMapper
مدل Student را به شکل زیر در نظر بگیرید
public class Student
   {
       public int Id { get; set; }
       public string Name { get; set; }
       public string Family { get; set; }
       public DateTime Birthdate { get; set; }
       public string Tel { get; set; }
       public string CellPhone { get; set; }
       [Email]
       public string Email { get; set; }
   }
: آن را به صورت زیر ViewModel 
 public class StudentViewModel
    {      
        public string Name { get; set; }
        public string Family { get; set; }
        public string Email { get; set; }
    }
برای نگاشت مجموعه‌ای از مدل Student به مجموعه‌ای از مدل StudentViewModel داریم:
public ActionResult Index()
   {
      var model = db.Students.ToList();
      AutoMapper.Mapper.CreateMap<Student,StudentViewModel>();
      var studentViewModel = AutoMapper.Mapper.Map<List<Student>, IEnumerable<StudentViewModel>>(model);
      return View(studentViewModel);
    }
که اگر دستور 
 AutoMapper.Mapper.CreateMap<Student,StudentViewModel>();
:را استفاده نکنیم، خطای زیر اتفاق می‌افتد
An exception of type 'AutoMapper.AutoMapperMappingException' occurred in AutoMapper.dll but was not handled in user code
  • #
    ‫۱۲ سال و ۲ ماه قبل، شنبه ۲۱ مرداد ۱۳۹۱، ساعت ۱۳:۵۶
    سلام ، 
    در AutoMapper معرفی نگاشت‌ها  از پیش شرط‌های انجام نگاشت اشیا به هم می‌باشد.
    معمولا این نگاشت‌ها در ابتدای شروع برنامه (مثلا متد  Application_Start در Global.asax) تعریف می‌شوند.
    • #
      ‫۱۲ سال و ۲ ماه قبل، شنبه ۲۱ مرداد ۱۳۹۱، ساعت ۱۶:۲۷
      با توجه به مطالب درج شده در این سایت، درباره AutoMapper و عدم ذکر نکته فوق خواستم این نکته را یادآوری کنم.
      از تذکر خوب شما هم ممنونم
      • #
        ‫۱۲ سال و ۲ ماه قبل، شنبه ۲۱ مرداد ۱۳۹۱، ساعت ۱۶:۴۰
        خواهش می‌کنم.
        فقط این مسئله رو بگم که در این پست اشاره شده که : 
        "در شروع برنامه نگاشت‌ها رو تعریف میکنم.یک روش ابداعی تعریف نگاشت‌ها در یک کلاس استاتیک و فراخوانی اون تو متد  Application_Start هست."
         
         
  • #
    ‫۱۰ سال و ۸ ماه قبل، جمعه ۲۷ دی ۱۳۹۲، ساعت ۲۰:۳۱
    با سلام به دوستان عزیزم
    نحوه انتقال اتوماتیک validation attribute‌های هر مدل به ویومدل مربوطه چگونه توسط automapper قابل انجامه؟ چون به صورت پیش فرض data annotation‌ها مپ نمیشن، آیا تنظیم خاصی برای این کار مورد نیازه؟
    • #
      ‫۱۰ سال و ۸ ماه قبل، جمعه ۲۷ دی ۱۳۹۲، ساعت ۲۰:۵۵
      قبل از پرسش بهتره کمی جستجو کنید. مثلا یک مورد در اینجا بحث شده
  • #
    ‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۲۰:۳۷
    سلام؛ در تمامی مثالها شما از مپر درون اکشن‌ها استفاده کردین، مگر لایه سرویس نباید خودش یک ویو-مدل بگیره و بقیه کارهای نگاشت و ... رو انجام بده و در خروجی نیز نوع ویو-مدل خروجی دهد ؟
    من یکم گیج شدم. احساس می‌کنم عملیات اتومپر باید درون لایه سرویس انجام بشه که داخل اکشن فقط متدهای سرویس رو صدا بزنیم. از طرفی هم توی لایه سرویس که اومدم استفاده کنم که ویو-مدلم رو به کلاس ef نگاشت کنم و بعد بریزم توی دیتابیس دیدم که نمیشه ، چون لایه سرویس application_start برای کانفیگ اتومپر نداره ؟!  لطفا راهنمایی نمایید. باتشکر
    • #
      ‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۲۱:۴۹
      لایه سرویس با بقیه قسمت‌های برنامه درون یک app domain اجرا میشن. یعنی همینکه تنظیمات اولیه auto mapper رو در ابتدای برنامه انجام دادید، بقیه لایه‌ها هم می‌تونن ازش استفاده کنن. این تنظیمات singleton هستن. یعنی فقط یک وهله ازشون در کل طول عمر برنامه وجود داره.