设置自动映射器 5.1

Setting up Automapper 5.1

在这种情况下,我在关注 wiki 时遇到了问题。我想使用 Automapper 5.2。我找不到一个简单的结束示例来显示具有上下文的可靠配置。通过上下文我的意思是你把配置文件放在哪里以及静态和实例之间的区别是什么 api?

我查看了 DNRTV 下载,但它涉及 1.0 版本。

你如何设置这个包?我有一个名为 Client 的模型,如下所示。

    public class Client : IEntityBase
{
    public Client()
    {
        Jobs = new List<Job>();
    }
    public int Id { get; set; }
    public int ClientNo { get; set; }
    public bool Company { get; set; }
    public string CompanyName { get; set; }
    public string ClientFirstName { get; set; }
    public DateTime DeActivated { get; set; }
    public bool Activity { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateUpdated { get; set; }

    public int? StateId { get; set; }
    public State State { get; set; }

    public int CreatorId { get; set; }
    public User Creator { get; set; }

    public ICollection<Job> Jobs { get; set; }
}

和这样的 ClientViewModel:

    public class ClientViewModel
{
    public int Id { get; set; }
    public int ClientNo { get; set; }
    public bool Company { get; set; }
    public string CompanyName { get; set; }
    public string ClientFirstName { get; set; }
    public DateTime DeActivated { get; set; }
    public bool Activity { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateUpdated { get; set; }
    public int? StateId { get; set; }
    public int CreatorId { get; set; }
    public int[] Jobs { get; set; }
}

我不确定如何在配置方面设置 AutoMapper。也就是说,他们谈论的是 global.asax 文件,而我正在使用 aspnet core.. 没有 Global.asax 文件..

如果有的话,你在 Startup.cs 文件中放了什么。

鉴于以上这两个文件,我需要做什么才能将 Automapper 与它们一起使用?

此致

这是在 asp.net core mvc.

中配置自动映射器的步骤

1. 创建从 Profile

扩展的映射配置文件 class
 public class ClientMappingProfile : Profile
 {
     public ClientMappingProfile ()
     {
         CreateMap<Client, ClientViewModel>().ReverseMap();
     }
 }

2. 创建 AutoMapper 配置 Class 并在此处添加映射配置文件 class。

public class AutoMapperConfiguration
{
   public MapperConfiguration Configure()
   {
        var config = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile<ClientMappingProfile>();
        });
        return config;
    }
}

3. 创建扩展方法,我们可以将其添加到 Startup.cs ConfigureServices 方法

public static class CustomMvcServiceCollectionExtensions
{
   public static void AddAutoMapper(this IServiceCollection services)
   {
       if (services == null)
       {
           throw new ArgumentNullException(nameof(services));
       }
       var config = new AutoMapperConfiguration().Configure();
       services.AddSingleton<IMapper>(sp => config.CreateMapper());
    }
} 

4.Startup.cs ConfigureServices方法中调用扩展方法

 public void ConfigureServices(IServiceCollection services)
 {
     services.AddDbContext<DBContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
     services.AddMvc();

     services.AddAutoMapper();
}