0

したがって、エラーは次のとおりです。式は、子オブジェクトのプロパティではなく、最上位のメンバーに解決する必要があります。

DTO の報酬は Enum です。ContractEntity は、ComplexType である Remuneration を使用します。

エラーをスローするコード:

Mapper.CreateMap<ContractDTO, ContractEntity>()
            .ForMember(d => d.Remuneration.ContractType, s => s.MapFrom(z => z.ContractType))
            .ForMember(d => d.Remuneration.Currency, s => s.MapFrom(z => z.Currency))
            .ForMember(d => d.Remuneration.RateUnit, s => s.MapFrom(z => z.RateUnit));

Entity Framework 複合型:

 [ComplexType]
public class Remuneration
{
    public decimal Amount { get; set; }
    public int Currency { get; set; }
    public int RateUnit { get; set; }
    public int ContractType { get; set; }    
}

宛先 (ContractEntity) で整数値を使用する必要があるため、次のようにソース列挙型を宛先整数にキャストできると考えました。

.ForMember(d => d.Remuneration.ContractType, s => s.MapFrom(z => (int)z.ContractType))

..明らかに私はできません.誰かがこれがうまくいかない理由を明確にしてくれることを望んでいました..

4

1 に答える 1

1

複雑な型マッピングに問題がある場合は、AutoMapper に基づいて手動マッピングを実装できます。

Mapper.CreateMap<PatternDto, PatternModel>().ConvertUsing(pattern =>
                {
                    if(pattern == null) return new PatternModel();
                    return new PatternModel
                        {
                            EmailPattern = pattern.EmailPattern,
                            SmsPattern = pattern.SmsPattern
                        };
                });

幸運を!

于 2013-09-05T12:15:56.430 に答える