第一、新建类库,以解决方案名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>();

asp.netMVC中配置automap的更多相关文章

  1. Asp.netMVC中地址后缀使用.html,jsp等404错误解决

    asp.net mvc 默认的地址路径url都是没有后缀的比如 www.a.com/aa/bb 等 如果要是www.a.com/aa/bb.html需要专门写路由. 根据我之前的经验,mvc的路由是相 ...

  2. asp.netMVC中使用aop进行关注点分离

    资源地址:https://stackoverflow.com/questions/23244400/aspect-oriented-programming-in-asp-net-mvc 从页面复制过来 ...

  3. asp.netMVC中,视图层和控制器层的传值

    Asp.Net Mvc 控制器与视图的数据传递 摘要:本文将讨论asp.net mvc框架中的数据传递. 数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业 ...

  4. ASP.NET中配置应用程序

    1.   配置文件简介 1.1 分类 1.2关系 Machine.Config和Web.Config都是设置应用程序的配置信息,它们按照类似于继承的关系对应用程序起作用. Machine.Config ...

  5. ASP.NET-MVC中Entity和Model之间的关系

    Entity 与 Model之间的关系图 ViewModel类是MVC中与浏览器交互的,Entity是后台与数据库交互的,这两者可以在MVC中的model类中转换 MVC基础框架 来自为知笔记(Wiz ...

  6. Asp.netMVC中Html.Partial,RenderPartial,Action,RenderAction区别和用法

    https://www.2cto.com/kf/201702/602449.html Partial 和RenderPartial: 这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传 ...

  7. asp.netMVC中权限控制论

    这里设想了一个简单的思路,如果用户登录了,也就是session中有值才可以在控制器中操作,这样先添加一个控制器,如下代码: public class AuthController : Controll ...

  8. asp.netMVC中实现分页方法

    方法一:使用传统的sql语句实现分页,    public class UserprintDao如下 /// <summary> /// 取得用户申请记录列表(按分页) /// </ ...

  9. asp.net中配置使用Sqlite轻型数据库

    Sqlite 管理工具 SQLiteDeveloper及破解 功能特点 表结构设计,数据维护,ddl生成,加密数据库支持,sqlite2,3支持 唯一缺憾,收费,有试用期 破解方法: 注册表删除 HK ...

随机推荐

  1. HTML符号代码速查表

    HTML实体符号被用作实现保留字符(reserved characters)或者表达键盘无法输入的一些常用字符.在大多数浏览器中默认的字符集为ISO-8859-1.HTML实体符号使我们在网页设计中经 ...

  2. mysql random 字母大小写和数字

    delimiter $$drop function if exists rand_string;create function rand_string(n int) returns varchar(2 ...

  3. SQL CASE Syntax

    CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE ...

  4. vue、Element 点击按钮以弹窗形式预览pdf文件

    直接上代码吧 <div > <el-button type="success" size="small" @click="isVie ...

  5. css百分比值到底参考谁?

    一.元素宽高设置百分比 (1)width / min-width / max-width 参考块级父元素的宽度 (2)height / min-height / max-height 参考块级父元素的 ...

  6. keras基于卷积网络手写数字识别

    import time import keras from keras.utils import np_utils start = time.time() (x_train, y_train), (x ...

  7. 实用——pojo (实体类) 常用函数

    1,转义方法 @JsonProperty("n")

  8. asp.net大文件传输断点续传源码

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...

  9. Ubuntu:电源管理

    本文适用于Ubuntu 16.04,造冰箱的大熊猫@cnblogs 2018/3/4 在Ubuntu 16.04中,与电源管理相关的选项位于System Settings下的Power对话框中. 要启 ...

  10. LCA离线Tarjan,树上倍增入门题

    离线Tarjian,来个JVxie大佬博客最近公共祖先LCA(Tarjan算法)的思考和算法实现,还有zhouzhendong大佬的LCA算法解析-Tarjan&倍增&RMQ(其实你们 ...