1

以下に Automapper を使用していますが、クライアントの連絡先テーブルにレコードがないため、オブジェクトのインスタンスに設定されていないオブジェクト参照を取得しています。エラー。

連絡先のコレクションは存在しますが、Contacts.ContactEmails コレクションは null です。

これに対処する最善の方法は何ですか?

Mapper.CreateMap<Client, ClientGrid>()
..ForMember(to => to.OfficeEmail, opt => opt.MapFrom(from => from.Contacts == null ? "" : from.Contacts.SingleOrDefault().ContactEmails.FirstOrDefault().Email));
4

2 に答える 2

1

Contact クラスを変更して、利用可能な場合は最初の ContactEmail を返し、そうでない場合は null を返す get プロパティを持たせることはできますか? 次に、代わりにそのプロパティにマップできます。

于 2012-05-03T17:45:48.193 に答える
1

私は.ConvertUsing<MyTypeConverter>()この問題を解決していました:

Mapper.CreateMap<Client, ClientGrid>()
    .ConvertUsing<ClientToClientGridConverter>();


class ClientToClientGridConverter
    : AutoMapper.ITypeConverter<Client, ClientGrid>
{
    public ClientGrid Convert(AutoMapper.ResolutionContext context)
    {
        if (context == null || context.IsSourceValueNull) 
        { 
            return null;
        }

        var client = context.SourceValue as Client;

        var clientGrid = new ClientGrid();

        // conversion rules and logic here

        return clientGrid 
    }
}
于 2016-01-29T17:39:25.043 に答える