3

私はここ数日間 AutoMapper をいじっていますが、基本的なタスクのように見えるものの値をマッピングするのに最も苦労しています。私は愚か者である可能性が最も高いですが、これらすべての絶え間ない例外がスローされることに本当にイライラし始めています。/暴言

とにかく、私は Entity Framework プロキシ オブジェクト を持っていますCompany。基本クラスを介しEntityて、 と呼ばれるプロパティCreatedDateTimeがありDateTimeます。という名前の DTO オブジェクトもありCompanyDto、これには という名前のプロパティCreatedDateTimeがありstringます。私がしたいのは、DateTime値を取得して平坦化することだけToString("g")です。私はたくさんのことを試しましたが、そのすべてが何らかの例外をスローします。機能した唯一のマッピングは、驚き、驚き:.Ignore()です。TypeConverter を使用した私の最新の試みは次のとおりです。

Mapper.CreateMap<DateTime, string>().ConvertUsing<DateTimeToStringConverter>();

public sealed class DateTimeToStringConverter : TypeConverter<DateTime, string> {
    protected override string ConvertCore(
        DateTime source) {
        if (source != null) {
            return source.ToString("g");
        }

        return string.Empty;
    }
}

そして、これが原因です:タイプ 'System.String'にはデフォルトのコンストラクターがありません

ジミー、あなたはSOを閲覧していますか?この時点で、AutoMapper を使用するよりも手動でマッピングする方が多くの作業を完了できると思うので、正しい方向を教えてください。

ああ、これは AutoMapper 3.1.1、Entity Framework 6.1、ASP.NET MVC 5.1.1 の場合です。

4

2 に答える 2

4

カスタムコンバーターの代わりにこれを試してください..

Mapper.CreateMap<Company, CompanyDto>()
      .ForMember(d => d.CreatedDateTime,
        expression => expression.ResolveUsing(s=>s.CreatedDateTime.ToString("g")));

// now do the Mapper.Map from Company to CompanyDto.
于 2014-03-31T04:06:01.143 に答える