第一、新建类库,以解决方案名XXX为例,建立子类库名为  XXX.AutoMapper。

第二、 XXX.AutoMapper类库中,添加对automap的引用。

第三、创建映射文件类 ModelProfile,继承Profile

codes:

---------------------------------------------

namespace BCMS.AutoMapper.Profiles
{
public class ModelProfile : Profile
{
public ModelProfile()
{

//配置相关映射

//eg

CreateMap<BaseUserEntity, BaseUserModel>()
.ForMember(model => model.StaffName, entity => entity.Ignore())
.ForMember(model => model.StaffNo, entity => entity.Ignore())
.ForMember(model => model.LocationTypeName, entity => entity.Ignore())
.ForMember(model => model.IsADLoginName, entity => entity.Ignore())
.ForMember(model => model.TypeName, entity => entity.Ignore())
.ForMember(model => model.BaseUserRoles, (map) => map.MapFrom(m => m.BaseUserRoles));

CreateMap<BaseUserModel, BaseUserEntity>()

.ForMember(model => model.BaseUserRoles, (map) => map.MapFrom(m => m.BaseUserRoles));

//................................

}}}//end

-----------------------------------------------------------------------------

第四、在类库名为  XXX.AutoMapper的类库中创建Configuration类(如果有就不用创建)把映射类ModelProfile 配置进去。

codes:

----------------------------------------------------------------

namespace BCMS.AutoMapper

{
public class Configuration
{
public static void Configure()
{
Mapper.Initialize(cfg => { cfg.AddProfile<ModelProfile>(); });//增加对 ModelProfile的初始化

Mapper.AssertConfigurationIsValid();
}
}
}

---------------------------------------------------------------------

第五、应用 automap。

把原生的automap进行扩展,封装。

创建一个XXX.Util类库,添加对 XXX.AutoMapper的引用。

创建静态的扩展类,public static class AutoMapperExtensions

codes:

-------------------------------

public static class AutoMapperExtensions
{
public static T ToModel<T>(this object entity)
{
return Mapper.Map<T>(entity);
}

public static T ToEntity<T>(this object viewModel)
{
if (viewModel == null)
return default(T);

return Mapper.Map<T>(viewModel);
}

public static IEnumerable<T> ToModelList<T>(this IEnumerable entityList)
{
if (entityList == null)
return null;

return (from object entity in entityList select entity.ToModel<T>()).ToList();
}
}

-------------------------------------------------

在Service层使用的时候,添加对XXX.Util类库的引用就可以了。

使用eg:

1.Model=>Entity

ProductModel editViewModel =new ProductModel (){Name ="AAAA"};

var entity = editViewModel.ToEntity<ProductEntity>();//转换为Entity

2.集合间转换。

IEnumerable<TargetMarketEntity> entitys = _targetMarketRepository.GetList(new { LocationTypeId = LocationTypeId });

IEnumerable<TargetMarketModel>  models =entitys .ToModelList<TargetMarketModel>();

最新文章

  1. 轻量级OLAP(一):Cube计算
  2. 内置函数dict
  3. WPF:依赖属性的应用
  4. JQuery学习之操作CSS
  5. [Eclipse配置] Eclipse代码中显示空白字符(空格,TAB和回车)的方法
  6. 下面就介绍下Android NDK的入门学习过程(转)
  7. Netsharp快速入门(之7) 基础档案(工作区1 向导创建工作区)
  8. Android 获得屏幕的宽高度
  9. POJ9384 迷宫(基金会BFS)
  10. java points[复习]
  11. 点评cat系列-简介
  12. windows 2008下IIS7 安装ASP.NET 遇到500.19
  13. sql prompt 缩写 快捷键
  14. SSH远程SOLARIS11时被拒绝
  15. 内核开启VF小结
  16. Three.js开发指南---学习使用几何体(第五章)
  17. NSLog演化
  18. Python 把数据库的数据导出到excel表
  19. day11(jsp入门&Cookie&HttpSession&一次性图片校验码)
  20. [Java] 一种好的JAVA分页实现

热门文章

  1. 7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
  2. Task底层实现原理探秘
  3. SSM框架中使用日志框架
  4. 11步教你选择最稳定的MySQL版本
  5. STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能
  6. jquery实现在光标位置(input、textarea)插入内容的方法
  7. React事件,修改this.state的值
  8. vueCli和脚手架
  9. TensorFlow使用记录 (五): 激活函数和初始化方式
  10. 「CTSC 2008」祭祀