2017-08-26 10 views
1

私は次の場合のマッピング設定を書き込もうとしています。マップするAutomapper 6のソースよりプロパティの少ない宛先へのマッピング方法は?

public class Category 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string ImagePath { get; set; } 

    public virtual ICollection<Service> Services { get; set; } 
    public int? SubcategoryId { get; set; } 
    [ForeignKey("SubcategoryId")] 
    public virtual Category Subcategory { get; set; } 
} 

そしてDTO:

public class CategoryDto 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string ImagePath { get; set; } 
} 

問題があり、ターゲットクラスは元より、以下の性質を持っている私は、ドメインオブジェクトを持っています。シンプルマップを使用すると、例外が発生します。

Mapper.Initialize(n => n.CreateMap<Service, ServiceDto>()); 

ソース1、クラスではないターゲットに適用されますので、私は、Ignore()を使用することはできません。方法ForSourceMember()も何らかの理由で助けになりませんでした。私はthisの質問を読んでいますが、ほとんどの場合問題ありませんが、Servicesnullではありません。それはCount = 0です。私も右からいくつかの同様の質問を読んだが、彼らは助けなかった、おそらく彼らは以前のバージョンで働いた。

誰かが私に解決策を見つけるのを手伝ったり、私が逃したことを説明してくれることを願っています。

+0

マップには問題はありませんが、実際はそのアイデアだから、目的地でのものが少なくて済みます。だから私はあなたが何を見ているのか分かりませんが、AMに関する限りあなたのマップはいいです。 –

+0

@LucianBargaoanu例外はメッセージ「エラーマッピングタイプ」を持つ 'AutoMapperMappingException'です。マッピング型: 'IEnumerable'1 - > List'1 System.Collections.Generic.IEnumerable'1 [[DomainEntities.Category]] - > System.Collections.Generic.List'1 [[Web.Dtos.CategoryDto]]'。内部例外は、タイプマップの設定が欠落しているか、サポートされていないマッピングです。マッピングタイプ: 'Category - > CategoryDto、DomainEntities.Category - > Web.Dtos.CategoryDto'。 'Mapper.Map 、List >(_ unitOfWork.Categories.GetAll())'でスローされた例外。通常これは彼がいくつかの小道具を見つけることができないことを意味します – QuarK

+0

reproが助けになります。私たちが実行して失敗することができる[要点](https://gist.github.com/lbargaoanu/9c7233441c3a3413cc2b9b9ebb5964a9)を作ってください。 –

答えて

1

Mapper.Initializeは、あなたが今やっているように、アプリケーションが自分自身を初期化するときにのみ呼び出すことができます。

+0

マッパーは 'Orders'の最後のマップしか記憶していませんね。複数のマップ設定を持つ方法はありますか? 2番目のコメントのあなたの要点の例は合っていますか? – QuarK

+1

はい。その1つのInitializeコールの中に、多くのCreateMapを持つことができます。または、プロファイルを使用します。 [docs](https://github.com/AutoMapper/AutoMapper/wiki/Configuration)。 –

+0

キリスト、ちょうど私の愚かな質問で私を助けたAutoMapperの開発者を実現しました。私はジュニアではない、私は価値がない!大いに感謝する。 – QuarK