如何使用Automapper配置MappingProfile?

时间:2019-11-21 10:22:39

标签: c# asp.net-core-2.2 ef-core-2.2 automapper-7

我正在使用asp.net core 2.2,Microsoft.EntityFrameworkCore(2.2.4),Microsoft.EntityFrameworkCore.Cosmos(2.2.4),AutoMapper.Extensions.Microsoft.DependencyInjection(7.0.0)

这是我的代码:

MappingProfile.cs

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        CreateMap<Languages, LanguageDTO>();        
        CreateMap<Countries, CountryDTO>().ForMember(dest => dest.Uuid, opt => opt.MapFrom(src => src.CountryId)).ForMember(dest => dest.DisplayName, opt => opt.MapFrom(src => src.DisplayName)).ForMember(dest => dest.DisplayNameShort, opt => opt.MapFrom(src => Helper.ReplaceChars(src.DisplayName))).ForMember(dest => dest.Path, opt => opt.MapFrom(src => Helper.ReplaceChars(src.DisplayName)));
    }
}

ServiceClass.cs

private async Task<List<CountryDTO>> GetCountriesAsync(int dftLanguageId, int localeLangId)
{
    int pageNo = 1, pageSize = 100;
    var countries = new List<CountryDTO>();
    // Get all the Flag images
    var images = await _dbContext.Images.Where(im => im.ImageType.Equals((int)ImageType.FlagPNG) && im.ImageType.Equals((int)ImageType.FlagSVG)).ToListAsync();
    countries = await _dbContext.Countries.Where(cc => cc.IsPublished.Equals(true) && cc.LanguageId.Equals(dftLanguageId)).Select(dfc => new CountryDTO{Uuid = dfc.CountryId, PNGImagePath = images.Where(im => im.ImageId.Equals(dfc.PNGImageId) && im.ImageType.Equals((int)ImageType.FlagPNG)).Select(c => c.FilePath).FirstOrDefault(), SVGImagePath = images.Where(im => im.ImageId.Equals(dfc.SVGImageId) && im.ImageType.Equals((int)ImageType.FlagSVG)).Select(c => c.FilePath).FirstOrDefault(), DisplayName = dfc.DisplayName, DisplayNameShort = dfc.DisplayName, Name = Helper.ReplaceChars(dfc.DisplayName), Path = Helper.ReplaceChars(dfc.DisplayName), CompleteResponse = true}).Skip((pageNo - 1) * 100).Take(pageSize).ToListAsync();
    return countries;
}

模型

public class Countries
{
    public string id
    {
        get;
        set;
    }

    public int CountryId
    {
        get;
        set;
    }

    public int? SVGImageId
    {
        get;
        set;
    }

    public int? PNGImageId
    {
        get;
        set;
    }

    public bool IsPublished
    {
        get;
        set;
    }

    public string CreatedBy
    {
        get;
        set;
    }

    public string CreatedDate
    {
        get;
        set;
    }

    public string UpdatedBy
    {
        get;
        set;
    }

    public string UpdatedDate
    {
        get;
        set;
    }

    public int? CountryContentId
    {
        get;
        set;
    }

    public int? LanguageId
    {
        get;
        set;
    }

    public string DisplayName
    {
        get;
        set;
    }

    public string DisplayNameShort
    {
        get;
        set;
    }
}

public class CountryResult
{
    public CountryResult()
    {
        Countries = new List<CountryDTO>();
    }

    public List<CountryDTO> Countries
    {
        get;
        set;
    }
}

public class CountryDTO
{
    [JsonProperty("pngimagePath")]
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string PNGImagePath
    {
        get;
        set;
    }

    = "";
    [JsonProperty("svgimagePath")]
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string SVGImagePath
    {
        get;
        set;
    }

    = "";
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string DisplayName
    {
        get;
        set;
    }

    = "";
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string DisplayNameShort
    {
        get;
        set;
    }

    = "";
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string ProviderName
    {
        get;
        set;
    }

    = "";
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string ProviderTerms
    {
        get;
        set;
    }

    = "";
    public int Uuid
    {
        get;
        set;
    }

    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string Name
    {
        get;
        set;
    }

    = "";
    [RegularExpression(Constants.GeneralStringRegularExpression)]
    public string Path
    {
        get;
        set;
    }

    = "";
    public bool CompleteResponse
    {
        get;
        set;
    }
}

在这里,我想知道如何在MappingProfile类中映射图像值? 谁能帮我解决此问题?

0 个答案:

没有答案