0

私は循環参照の問題や、次のアーキテクチャでSOLID違反を持っています。しかし、私はMVCとドメイン間の参照(それはうまく動作します)があります。マッピングは、プレゼンテーションレイヤーである最上位レイヤーで行う必要があります。それを切り離すには、ドメインを参照せずにPresentation Layerでマッピングを行いますか?ドメイン駆動設計とAutomapper

AutomapperをPresentation Layerから切り離すと、ViewModelが必要なため循環参照があり、Presentationはマッピングを呼び出す必要があります。

+0

にもデカップリングできることがわかり? ViewModelとは何が関係していますか<=> PresentationからのDTOマッピングとデカップリングマッピング? – guillaume31

+0

プレゼンテーションからドメインの参照を削除します。 –

+0

どのようにしてプレゼンテーションレイヤーとアプリケーションレイヤーの間のマッピングに関連していますか? – guillaume31

答えて

0

インターフェイスの定義方法によって少し異なります。あなたのマッピングを行う必要があるところでは教えてくれます

プレゼンテーションから次の層(プレゼンテーション層は、インターフェースに依存していることを、ここでこの

ISomeService MyService;//Resolve this with your favorite dependency injection fromwork 

var result = MyService.MySeriviceCall(Automapper.Map<SomeEntity>(fooDto)); 

お知らせのように見えなければならないでしょう、あなたのコードを階層を呼び出しますインプリメンテーションではありません)。

あなたのインターフェイスがこの

interface SomeService(SomeEntity foo) 

のように見えるなら、あなたはプレゼンテーション層では、あなたのマッピングを行う必要があります。しかし、このサービスを呼び出すためには、あなたのドメインの層があなたのインターフェースに定義されているので、すでにあなたのドメイン層を知っておく必要があります。あなたのインターフェイスがこの

interface SomeService(SomeDTo foo); 

のように見える場合

しかし、その後の参照は、両方のドメインモデルとプレゼンテーション層へのごapplicationServiceからです。そしてマッピングはアプリケーションサービス(私の好みの場所、そして今あなたはDependency Inversionを持っています)で行われます。 注:DTOを別のプロジェクトに置くことができるので、DTOを認識する必要があります。

はまた、あなたのマッピングを定義し、あなたのマッピングを呼び出すと、デあなたは、ドメイン層を言及しないのはなぜ(https://github.com/AutoMapper/AutoMapper/wiki/Configuration

関連する問題