ASP.NET CORE使用AutoMapperオブジェクトのマッピング
1. AutoMapperは何ですか?
AutoMapperの一般的に使用される合意されたマッピングツールに基づいて、オブジェクトのオブジェクト(これらに限定されないが)一般ビューモデルパターンと交差サービスエリアのために使用DTOに複雑なオブジェクトモデル。
AutoMapperはちょうど自動マッピングそれを完了するために規則を使用し、ユーザーに便利な設定のAPIを提供します。
AutoMapperは、以下の特徴を含む:フラット投影、認証、リストと配列を構成する、ネストされたマッピング、カスタム型変換プログラム、カスタム値変換処理、カスタム・フォーマット・プログラムの値は、値nullを置き換えます
AutoMapperは一方向のマッパーです。これは、ユーザーが明示的にマッピングオブジェクトを更新した後、再帰反射を作成しない限り、前後に元のソースへの書き込みをサポートし、組み込みのマッピングオブジェクトを持っていないことを意味します。これは、設計によって行われDTOが書き戻させ、言うので、完了です:ドメインモデルまたは何か他のものを、それはその持続性を変更しますが、それはまた、アンチパターンであると考えています。このソリューションでは、コマンドメッセージは、双方向のマッピングは、多くの場合、より良い選択です。非常に単純なCRUDアプリケーション:ただし、特定の状況では、1のような、双方向のマッピングのために主張するかもしれません。双方向マッピングのりをサポートしていますフレームワーク。
2、ASP.NET COREにおける利用AutoMapper
① パッケージ管理コンソールで依存関係をインストールするためのコマンドを実行します。
PM>インストール・パッケージAutoMapper -Version 8.1。1
PM>インストール・パッケージAutoMapper.Extensions.Microsoft.DependencyInjection -Version 6.1。1
②引用したアプリケーションからの依存性注入サービスを使用
()ConfigureServicesスタートアップクラスのメソッド呼び出しAddAutoMapper()サービス:
1 公共 ボイドConfigureServices(IServiceCollectionサービス) 2 { 3 services.AddAutoMapper()。 4 }
③AutoMapperマッピングルールを作成します
AutoMapperConfigsクラスを追加し、クラスの継承プロフィール
1 使用AutoMapperと、 2 使用CodeFirst.Modelsと、 3 使用DALと、 4 5 名前空間CodeFirst.Common 6 { 7 パブリック クラスAutoMapperConfigs:プロファイル 8 { 9 // 添加实体映射关系 10 公衆AutoMapperConfigs() 11 { 12 CreateMap <MainModel、MainInfoResult>(); // MainModel转MainInfoResult 13 CreateMap <MainInfoResult、MainModel>(); // MainInfoResult转MainModel 14 } 15 } 16 }
④コンストラクタ・インジェクションのIMapperで
1 パブリック クラスLoginController:コントローラ 2 { 3 プライベートIMapperの_mapper。 4 5 公共LoginController(IMapperマッパー) 6 { 7 _mapper = マッパー。 8 } 9 }
⑤オブジェクト変換AutoMapperを使用して
シングルオブジェクト変換
1 公共のActionResult RegistSend(MainModelモデル) 2 { 3 VAR DTO = _mapper.Map <MainInfoResult>(モデル)。// MainModel转MainInfoResult 4 VAR再= _userdal.RegistSend(DTO)。// 传入的对象为MainInfoResult 5 リターン JSON(新規 {ステータス= re.Status、メッセージ= re.Message})。 6 }
変換コレクション
パブリック <学生>リストGetStudentList() { // アナログデータ VaRの StuList = 新しい新しいリスト<StuInfo> () { 新新しい StuInfo()= {ID 。1、名前= " ジョー・スミス"、セックス= " M "、=年齢18です} 、 新しい新しい StuInfo(){ID = 2、NAME = " ジョン・ドウ"、セックス= " M "、年齢= 19 }、 新しい新しい StuInfo()= {ID 。3、NAME = " 王呉"、セックス= " M "、年齢= 18であり、} }; // 。DTOは、オブジェクトセットの設定左折 するvar。学生を_Mapper.Map = <リスト<学生>> (StuList); を返す学生; }
:AutoMapper非常に強力な、など異なる属性名、NULL値の置換を、サポートするには、単純な一般的な方法は、AutoMapperは詳細については、公式ウェブサイトのアドレスを参照ここで紹介http://automapper.org/を