2016-08-08 9 views
-1

で行う方法を私は複数の層(およびDTOオブジェクト)とWCFプロジェクトを持っている:AutoMapper、WCFおよびマルチレイヤは:依存

- サービス(WCFホスト)
- ビジネスレイヤ(またはドメイン・レイヤー)
- データアクセスレイヤー(Entityフレームワークを使用)

データベース情報を取得するには、automapperを使用してEntityオブジェクトをDTOオブジェクトにマップします。

しかし、私がglobal.asaxでマッピングを設定すると、私の問題は、サービス層がデータアクセス層を参照していないということです。

どうすればいいですか?

ありがとうございます。

+0

DAC(Entity)からサービスモデルへ、またはDACからUI(ViewModel)にマップする予定はありますか? –

+0

こんにちは、サービスモデルへのdac。しかし、私はサービスとデータの間にビジネス層を持っています – Alterinj

+0

しかし、あなたのデータ層は、モデルオブジェクト、エンティティオブジェクトを返さなければなりません。このモデルがdacとは別の場合、サービスレイヤのモデルを参照できます。 –

答えて

0

プロファイルスキャンを含むAutoMapper 5.1を使用しているとします。まず、あなたは適切な場所でのプロファイルにあなたの設定を入れたいと思います:

public class EntityToDtoProfile : Profile { 
    public EntityToDtoProfile() { 
     CreateMap<Entity, Dto>(); 
    } 
} 

次に、あなたのWCFのアプリ、アプリの起動があるところはどこでも、あなたがスキャンするアセンブリ名を渡し、AutoMapperを初期化しますでプロファイルの場合:

Mapper.Initialize(cfg => { 
    cfg.AddProfiles(new [] { 
     "MyLayeredApp.BLL", 
     "MyLayeredApp.DAL", 
     "MyLayeredApp.Service" 
    }); 
}); 

AutoMapperはこれらのアセンブリをプロファイル用にスキャンして構成に登録します。起動時に一度だけMapper.Initializeを呼び出すようにしてください。これは、他のアプリケーション全体の設定と同じです。

または、ただ1つのWCFプロジェクトを作成し、それらのプロジェクトを1つにまとめ、組織化のためにフォルダを使用します。それも動作します。

関連する問題