Setting up Automapper 5.1

2019-01-20 07:00发布

问题:

I am having trouble following the wiki in this instance. I wanted to use Automapper 5.2. I cannot find a simple end for end example that shows a solid configuration with context. By context I mean where do you put the config files and whats the difference between static and instance api?

I checked out the DNRTV download but it deals with the 1.0 version.

How do you set this package up? I have a model called Client as below.

    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; }
}

and a ClientViewModel as so:

    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; }
}

I am unsure how to set AutoMapper up with regard to configuration. That is, they talk about a global.asax file and I am using aspnet core.. there is no Global.asax file..

What do you put in the Startup.cs file if anything.

Given these two files above what do I need to do to use Automapper with them?

Regards

回答1:

Here is the steps to configure the automapper in asp.net core mvc.

1. Create the mapping profile class which extends from Profile

 public class ClientMappingProfile : Profile
 {
     public ClientMappingProfile ()
     {
         CreateMap<Client, ClientViewModel>().ReverseMap();
     }
 }

2. Create the AutoMapper Configuration Class and add your mapping profile class here.

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

3. Create extension method so, we can add this to Startup.cs ConfigureServices method

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. Call the extension method in Startup.cs ConfigureServices method

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

     services.AddAutoMapper();
}