2017-04-20 12 views
3

私はAutoMapper 5.2を使用しています。現在、次のようなマッピングステートメントがあります。intをbooleanにマップする方法

CreateMap<JeffreysOnline.Data.Customer, JeffreysOnline.Entities.Customer>() 
       .ForMember(s => s.CustomerWant, t => t.Ignore()); 

CustomerテーブルとCustomerエンティティの両方に、BadChecksという名前のフィールドがあります。データベースではintです。私は最近、私のエンティティの型をboolに変更しました。 AutoMapperはブール値にint型からマッピングする方法を知らないようだ

Unable to create a map expression from Customer.BadChecks (System.Int16) to Customer.BadChecks (System.Boolean) Mapping types: Customer -> Customer JeffreysOnline.Data.Customer -> JeffreysOnline.Entities.Customer Type Map configuration: Customer -> Customer JeffreysOnline.Data.Customer -> JeffreysOnline.Entities.Customer Property: BadChecks 

:AutoMapperは今、私に次のエラーを与えています。これで私がAutoMapperを手助けすることは可能でしょうか?

私のDALでは、IQueryableをデータにアクセスしようとしている別のメソッドに渡すためにProjectTo()を使用しているため、マッピングが発生しています(エラーが生成されています)。私のDALコードは次のようになります。私はブールにint型からマッピングする方法を知っているだろうとは思わない

return entityList.OrderBy(row => row.LastName).ProjectTo<Entities.Customer>(); 

答えて

4

Automapper 6.0.2 - ForMemberなしで動作します... null、0 = false、値> = 1はtrueにマップされます。

Automapper 6.0.2では

- 他の方法:

class nnnProfile : Profile 
    { 
     CreateMap<src, dst>() 
      .ForMember(d => d.Decision, opt => opt.ResolveUsing<CustomBoolResolver>());  
    } 

リゾルバ:

public class CustomBoolResolver : IValueResolver<src, dst, bool> 
{ 
    public bool Resolve(src source, dst destination, bool destMember, 
     ResolutionContext context) 
    { 
     return source.Decision == 1; 
    } 
} 

が、これは宛先ごとなので、あまり柔軟ではありません。このページによると

:過去には http://taswar.zeytinsoft.com/automapper-mapping-objects-part-5-of-7-customresolver/

あなただけのソースとターゲット・タイプとカスタムリゾルバを書くことができます。

+0

Automapper 6.0.2には、intをboolに設定するデフォルトの設定がありますか? – unicorn2

2

あなたはそれが起こるはず方法を見つけ出す行う場合は、ブール値にint型からのマッピングを作成する必要があります。:

CreateMap<int, bool>().ProjectUsing(src => src != 0); 

完全にそこに推測します。しかし、ProjectToを使用しているので、ProjectUsingを使用する必要があります。これにより、式でDALに至るまですべての処理が完了します。

ProjectUsingを使用する場合、AutoMapperは実際にマッピングを実行していないことに注意してください。 LINQ "Select"式を作成してクエリプロバイダに渡します(おそらくEF?)。そのため、投影式で使用するものが何であれ、EFは最終的にSQLへの変換をサポートできることを確認する必要があります。

関連する問題