1

これは重複した質問としてフラグが立てられている可能性があることを知っています。はい、すでに私の質問に回答している可能性のある質問を確認しましたが、まだ回答が見つかりませんでした.

他のほとんどの質問が関連しているように、私の問題は相互に参照するモデルに関連しています。コードをリファクタリングして子用に個別の DTO オブジェクトを作成するなど、従うことができる他のアプローチをよく知っています。問題は、かなりの数のモデルがあり、すべてをリファクタリングするのは非常に面倒なことです。

Automapper v5.0 アップグレード ガイドを読みましたが、次のように記載されています。

ここに画像の説明を入力

私が試したもの-たとえばClientModel

var clientModelMap = CreateMap<Client, ClientModel>()
    .ForMember(dest => dest.Id, source => source.MapFrom(x => x.ClientId))
    .ForMember(dest => dest.InvoicePayments, source => source.Ignore());

clientModelMap.MaxDepth(1);
clientModelMap.PreserveReferences();

Projectモデルと同様に:

var projectModelMap = CreateMap<Project, ProjectModel>()
    .ForMember(dest => dest.Client, source => source.Ignore())
    .ForMember(dest => dest.Id, source => source.MapFrom(x => x.ProjectId))
    .ForMember(dest => dest.ClientName, source => source.MapFrom(x => x.Client.ClientName))
    .ForMember(dest => dest.ClientTariff, source => source.MapFrom(x => x.Client.Tariff))
    ;
projectModelMap.MaxDepth(1);
projectModelMap.PreserveReferences();

構造は次のとおりです。

  • クライアント
    • プロジェクト(各クライアントには多くのプロジェクトがあります)
      • リソース (各プロジェクトにはプロジェクト マネージャーがいます)
        • プロジェクト (彼/彼女が取り組んでいる 1 つ以上のプロジェクトに関連付けられている)
        • クライアント (クライアントに関連付けられている/マネージャーとして機能する)

しかし、これは何の効果もありませんStackOverflowException。私は何が欠けているか、間違っていますか?

これがうまくいかない場合は、提案をお待ちしています。

どうもありがとう!

4

1 に答える 1

0

(OPに代わって投稿) .

期待どおりに機能しています。モデル階層の残りのマッピング プロファイルを更新する必要がありました。

于 2016-09-02T10:35:10.510 に答える