PDA

View Full Version : حرفه ای: استفاده از AutoMapper



hmahdavi921
دوشنبه 23 اردیبهشت 1398, 09:43 صبح
با سلام
اگر دوستان با AutoMapper کار کردید ، نحوه استفاده از اون رو توضیح بدید.
من از ناگت نصب کردم و موقع استفاده خطا میده :
Mapper not initialized. Call Initialize with appropriate configuration. If you are trying to use mapper instances through a container or otherwise, make sure you do not have any calls to the static Mapper.Map methods, and if you're using ProjectTo or UseAsDataSource extension methods, make sure you pass in the appropriate IConfigurationProvider instance.

ProjectAttributeDb projectAttributeDb = new ProjectAttributeDb();
ProjectAttribute projectAttribute = projectAttributeDb.GetProjectAttribute(id);
ProjectAttributeViewModel model = new ProjectAttributeViewModel();
AutoMapper.Mapper.Map(projectAttribute, model);
return View(model);

خطا مربوط به کانفیگ نشدن AutoMapper هست که من انجامش ندادم.
با تشکر

ali_md110
دوشنبه 23 اردیبهشت 1398, 22:06 عصر
برای بکارگیری automapper به دو صورت یکی از کلاس استاتیک Mapper استفاده میکینم یا از MapperConfiguration

فرض کنیم دو کلاس داریم Model و ViewModel
کلاس Model سورس هست
یک لیست فرضی میسازیم


var list = new List<Model>
{
new Model { Id = 1, FirstName = "ali" },
new Model { Id = 2, FirstName = "reza" },
};
Mapper.Initialize(cfg => cfg.CreateMap<Model, ViewModel>());
var mapps = Mapper.Map(list, new List<ViewModel>());
foreach (var m in mapps)
{
Console.WriteLine(m.FirstName);
}


میتونید سطر آبی رنگ را در استارت آپ صدا بزنید تا هر بار نیاز به نوشتن آن در قسمهای برنامه نباشید
روش دیگه بکارگیری MapperConfiguration هست



var list = new List<Model>
{
new Model { Id = 1, FirstName = "ali" },
new Model { Id = 2, FirstName = "reza" },
};

var config = new MapperConfiguration(cfg => cfg.CreateMap<Model, ViewModel>());
var mapper = config.CreateMapper();
var mapps = mapper.Map<List<ViewModel>>(list);
foreach (var m in mapps)
{
Console.WriteLine(m.FirstName);
}


روش ارجح تر بکارگیری IMapper هست که باید از تزریق وابستگی استفاده کرد
در این روش باید از یکی IOC های مشهور مانند StructureMap یا Ninject یا Simple Injector یا Unity جهت Register کردن Automapper استفاده میکنیم
منبع یادگیری
http://docs.automapper.org/en/stable/Getting-started.html

hmahdavi921
سه شنبه 24 اردیبهشت 1398, 08:41 صبح
سپاس از راهنمایی کاملتون.:تشویق: