c# - 通过 id 获取项目并使用自动映射器将其标题映射到字符串

标签 c# asp.net asp.net-core automapper

我有 2 个模型:

public class Client
{
    public Guid Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    ...

    [ForeignKey("CountryId")]
    public Country Country { get; set; }
    public Guid CountryId { get; set; }
}

public class Country
{
    public Guid Id { get; set; }
    public string Title { get; set; }
}

我想显示此虚拟机:

public class ClientDetailsDto
{
    public Guid Id { get; set; }

    ...

    public string Country { get; set; } // Country's title
}

我应该如何获取国家/地区并将其映射到 ClientDetailsDto 中的字符串国家/地区?

我在 Startup 类 (Startup.cs) 中使用 AutoMapper:

AutoMapper.Mapper.Initialize(config =>
{
    config.CreateMap<Entities.Client, Models.ClientDetailsDto>()
        .ForMember(dest => dest.Name, opt => opt.MapFrom(src =>
            $"{src.LastName} {src.FirstName} {src.Patronym}"))
        .ForMember(dest => dest.Age, opt => opt.MapFrom(src =>
            src.Birthdate.GetCurrentAge()))
        // How to get Country's title and map it to ClientDetailsDto.Country?
}

最佳答案

试试这样;

.ForMember(dest => dest.Country, opt => opt.MapFrom(src =>
 src.Country.Title)

完整的 map 看起来像;

config.CreateMap<Entities.Client, Models.ClientDetailsDto>()
    .ForMember(dest => dest.Name, opt => opt.MapFrom(src =>
        $"{src.LastName} {src.FirstName} {src.Patronym}"))
    .ForMember(dest => dest.Age, opt => opt.MapFrom(src =>
        src.Birthdate.GetCurrentAge()))
    .ForMember(dest => dest.Country, opt => opt.MapFrom(src =>
        src.Country.Title));

关于c# - 通过 id 获取项目并使用自动映射器将其标题映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48011865/

相关文章:

c# - 限制 C# 应用程序中托管堆的大小

javascript - ASP.NET Ajax 错误 : Sys. WebForms.PageRequestManagerParserErrorException

sql-server - Linux 上的 .NET Core 如何确定 SQL Server 实例监听的端口?

asp.net - Entity Framework Core - 这可能表明 EF Core 中存在错误或限制

asp.net - Azure Web App不构建 typescript 文件

asp.net-core - ASP.NET Core 2 中 HttpResponseBase.BufferOutput 属性的等价物是什么?

asp.net - 这些中间件有什么不同

c# - NAudio 逐个样本写入文件

c# - 如何避免参数验证

c# - 完全重启后如何卸载未使用的 COM 对象/库?