Beispiel #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var _mapperConfiguration = new global::AutoMapper.MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new AutoMapperProfileConfiguration());
            });

            services.AddSingleton <IMapper>(sp => _mapperConfiguration.CreateMapper());
            // Add framework services.
            services.AddApplicationInsightsTelemetry(Configuration);
            services.AddMemoryCache();

            services.AddEntityFrameworkSqlServer()
            .AddDbContext <ApplicationDbContext>(options =>
                                                 options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]))
            .AddDbContext <ProjectDataContext>(options =>
                                               options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]))
            .AddDbContext <TaskDataContext>(options =>
                                            options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

            services.AddIdentity <ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores <ApplicationDbContext>()
            .AddDefaultTokenProviders();

            services.AddMvc();

            services.AddScoped <IProjectDataContext, ProjectDataContext>();
            services.AddScoped <ITaskDataContext, TaskDataContext>();
            services.AddScoped <IFileService, FileService>();
        }
            public static global::AutoMapper.IMapper Create()
            {
                var mapper = new global::AutoMapper.MapperConfiguration(c =>
                {
                    // TODO: try reversemap https://stackoverflow.com/questions/13490456/automapper-bidirectional-mapping-with-reversemap-and-formember
                    //c.AddExpressionMapping();
                    //c.IgnoreUnmapped();
                    //c.AllowNullCollections = true;
                    c.CreateMap <StubEntity, StubDb>()
                    .ForMember(d => d.ExtTenantId, o => o.MapFrom(s => s.TenantId))
                    .ForMember(d => d.Identifier, o => o.MapFrom(s => s.Id))
                    .ForMember(d => d.ETag, o => o.MapFrom(s => s.IdentifierHash))
                    .ForMember(d => d.Country, o => o.MapFrom(s => s.Country))
                    //.ForMember(d => d.FullName, o => o.ResolveUsing(new FullNameResolver()))
                    .ForMember(d => d.FullName, o => o.MapFrom(s => $"{s.FirstName} {s.LastName}"))
                    .ForMember(d => d.YearOfBirth, o => o.MapFrom(new YearOfBirthResolver()));

                    //c.CreateMap<ITenantEntity, StubDto>()
                    //    .ForMember(d => d.ExtTenantId, o => o.MapFrom(s => s.TenantId))
                    //    .ForMember(d => d.Identifier, o => o.Ignore())
                    //    .ForMember(d => d.Country, o => o.Ignore())
                    //    .ForMember(d => d.FullName, o => o.Ignore())
                    //    .ForMember(d => d.YearOfBirth, o => o.Ignore());

                    c.CreateMap <StubDb, StubEntity>()
                    .ForMember(d => d.TenantId, o => o.MapFrom(s => s.ExtTenantId))
                    .ForMember(d => d.Id, o => o.MapFrom(s => s.Identifier))
                    .ForMember(d => d.IdentifierHash, o => o.MapFrom(s => s.ETag))
                    .ForMember(d => d.Country, o => o.MapFrom(s => s.Country))
                    //.ForMember(d => d.FirstName, o => o.ResolveUsing(new FirstNameResolver()))
                    .ForMember(d => d.FirstName, o => o.MapFrom(s => s.FullName.Split(' ', StringSplitOptions.None).FirstOrDefault()))
                    //.ForMember(d => d.LastName, o => o.ResolveUsing(new LastNameResolver()))
                    .ForMember(d => d.LastName, o => o.MapFrom(s => s.FullName.Split(' ', StringSplitOptions.None).LastOrDefault()))
                    .ForMember(d => d.Age, o => o.MapFrom(new AgeResolver()))
                    .ForMember(d => d.State, o => o.Ignore());

                    //c.CreateMap<StubDto, ITenantEntity>()
                    //    .ForMember(d => d.TenantId, o => o.MapFrom(s => s.ExtTenantId));
                });

                mapper.AssertConfigurationIsValid();
                return(mapper.CreateMapper());
            }