パッケージAutoMapperは2.2をnetcore

最後の章では、クラスを作成することにより、autoMapperプロファイルクラスを継承しました

    パブリック クラスマッピング:プロファイル
    { 
        パブリックマッピング()
        { 
            CreateMap <UserDto、TbUser> (); 
        } 
    }

その時の転送対象ロットで欠陥があるやって、手動でも1とも比較的トラブル、それを維持するとの間のマッピングを設定する必要があります。

パッケージAutoMapper

作成AutoMapperExtension拡張クラス

    ///  <まとめ> 
    /// AutoMapperにより拡張
     ///  </要約> 
    パブリック 静的 クラスAutoMapperExtension 
    { 
        ///  <まとめ> 
        /// ターゲット・オブジェクトにソースオブジェクトをマップする
         ///  </要約> 
        ///  <typeparam名= "T"> エンティティタイプ</ typeParam> 
        ///  <PARAM NAME = "OBJ"> ソースオブジェクト</ PARAM> 
        ///  <戻り値> エンティティ変換後</戻り> 

        パブリック 静的 T MapTo < T>( この オブジェクトOBJ)
        { 
            場合(OBJ == nullのスロー 新しいです例外(" 例外" );
             VARの設定= 新しい新しい MapperConfiguration(CTX => ctx.CreateMap(obj.GetType()、typeof演算(T)));
             VARマッパー= config.CreateMapper();
             戻り mapper.Map <T> OBJ); 
        } 

        ///  <まとめ> 
        /// ターゲット・オブジェクトにソースオブジェクトをマップする
         ///  </要約> 
        ///  <typeParam名= "T"> エンティティタイプ</ typeParam> 
        ///  <PARAM名= "DTO"> ソースオブジェクト</ param>の
        ///  <PARAM NAME = "エンティティ">観客</ param>の
        /// <リターン> 转化之后的实体</戻り> 
        パブリック 静的 T地図<T>(オブジェクトDTO、Tエンティティ)
        { 
            VARの設定= 新しい MapperConfiguration(CTX => ctx.CreateMap(dto.GetType()、typeof演算(T)) );
            VARマッパー= config.CreateMapper()。
            VAR newModel = mapper.Map(DTO、エンティティ);
            返すnewModelを。
        } 
    }

ビジネス層を変更

        ///  <要約> 
        /// 添加用户
         ///  </要約> 
        ///  ます。<param name = "DTO"> 实体传输对象</ param>の
        ///  <リターン> </リターン> 
        公共 intが追加( UserDto DTO)
        { 
            // VAR情報= _mapper.Map <UserDto、TbUser>(DTO)。
            VAR情報= dto.MapTo <TbUser> (); 
            info.AddTime = DateTime.Now; 
            info.UserId = Guid.NewGuid()ToStringメソッド(" N " )。
            // VARユーザー=新しいTbUser
             // {
             //    。= Guid.NewGuidユーザーID()のToString( "N")、
             //     メール= dto.Emailにおいて、
             //     ユーザー名= dto.UserName、
             //     でaddTime DateTime.Now =
             // }; 
            _dbContext.Add(情報);
             リターン_dbContext.SaveChanges(); 
        } 
        ///  <まとめ> 
        /// 編集ユーザ情報
         ///  </要約> 
        ///  <PARAM NAME = "DTO"> 物理的送信対象</ PARAM> 
        ///  <戻り値> </戻り値> 
        公共 int型の更新(UserDTO DTO)
        { 
            VARのユーザー=_dbContext.TbUsers.Find(dto.UserId);
             IF(ユーザー== nullのスロー 新しい新しい例外(" ユーザー情報の取得に失敗しました" );
             // user.username = dto.UserName;
             // user.email = dto.Email。
            AutoMapperExtension.Map(DTO、ユーザ);
             戻り_dbContext.SaveChanges(); 
        }

テストを実行

同じ効果があらかじめパッケージ

おすすめ

転載: www.cnblogs.com/tenghao510/p/11978076.html