مقدمه ای بر AutoMapper
نویسنده: محمد صاحب
تاریخ: ۱۳۹۱/۰۴/۱۳ ۱۷:۲۲
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public bool IsAdmin { get; set; }
public virtual ICollection<BlogPost> BlogPosts { get; set; }
}
public class UserViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
}
public ActionResult Index(int id = 1)
{
var user = _userService.GetById(id);
var userViewModel = new UserViewModel
{
FirstName = user.FirstName,
LastName = user.LastName,
Password = user.Password
};
return View(userViewModel);
}
PM> Install-Package AutoMapper
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
ConfigureUserMapping();
}
private static void ConfigureUserMapping()
{
Mapper.CreateMap<User, UserViewModel>();
}
}
public ActionResult Index(int id=1)
{
var user = _userService.GetById(id);
var userViewModel=new UserViewModel();
AutoMapper.Mapper.Map(user, userViewModel);
return View(userViewModel);
}
@model DotnetDevBlog.Web.Models.UserViewModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.DisplayForModel()
public void Edit_news_ajax(News news)
{
using (var Context = new ProCamContext())
{
var q=Context.News.Find(news.id);
AutoMapper.Mapper.Map(news,q);
//NewsRepository.EditNews(news.id, q);
Context.SaveChanges();
}//end news
}AutoMapper.Mapper.Map(news,q);
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Source, Dest>();
});
IMapper mapper = config.CreateMapper();
var source = new Source();
var dest = mapper.Map<Source, Dest>(source); install-package automapper
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
using AutoMapper;
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddAutoMapper(); }
public class UserMappingProfile:Profile
{
public UserMappingProfile()
{
CreateMap<User, UserPost>();
CreateMap<UserPost,User >()
.ForMember(dest=>dest.Username,src=>src.Ignore())
.ForMember(dest=>dest.Email,src=>src.Ignore());
}
} private readonly IMapper _mapper;
public UserController(IMapper mapper)
{
_mapper = mapper;
}
public async Task<UserPost> FindUser(string username)
{
var users = await _userServices.GetUser(username);
var user = _mapper.Map<User,UserPost>(users);
return user;
} var profiles = typeof(UserMappingProfile).Assembly.GetTypes().Where(types => typeof(Profile).IsAssignableFrom(types)).Select(types => (Profile)Activator.CreateInstance(types));
services.AddAutoMapper(cfg =>
{
foreach (var profile in profiles)
cfg.AddProfile(profile);
}); services.AddAutoMapper(typeof(UserMappingProfile).GetTypeInfo().Assembly); // اسکن خودکار یک اسمبلی، اگر پروفایلها در یک اسمبلی دیگر هستند