Asp.net mvc 3 我是否需要双向创建automapper createmap?
这可能是个愚蠢的问题!(n00b到AutoMapper,时间很短!) 我想使用AutoMapper将EF4实体映射到ViewModel类 1) 如果我打电话Asp.net mvc 3 我是否需要双向创建automapper createmap?,asp.net-mvc-3,model,viewmodel,automapper,Asp.net Mvc 3,Model,Viewmodel,Automapper,这可能是个愚蠢的问题!(n00b到AutoMapper,时间很短!) 我想使用AutoMapper将EF4实体映射到ViewModel类 1) 如果我打电话 CreateMap<ModelClass, ViewModelClass>() CreateMap() 那我也需要打电话吗 CreateMap<ViewModelClass, ModelClass>() CreateMap() 执行相反的操作 2) 如果两个类具有相同的属性名,那么我是否需要CreateMap
CreateMap<ModelClass, ViewModelClass>()
CreateMap()
那我也需要打电话吗
CreateMap<ViewModelClass, ModelClass>()
CreateMap()
执行相反的操作
2) 如果两个类具有相同的属性名,那么我是否需要CreateMap语句,或者这只是用于“特定/自定义”映射?在AutoMaper中,您有一个源类型和一个目标类型。因此,只有当您有相应的CreateMap时,才能在源类型和目标类型之间进行映射。因此,要回答您的问题:
Map
告诉您源类型和目标类型之间不存在映射时,将引发异常我使用了一种扩展方法来实现双向映射
public static IMappingExpression<TDestination, TSource> BothWays<TSource, TDestination>
(this IMappingExpression<TSource, TDestination> mappingExpression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
publicstaticimappingexpression双向
(此IMappingExpression映射表达式)
{
返回Mapper.CreateMap();
}
用法:
CreateMap<Source, Dest>().BothWays();
CreateMap().BothWays();
了解偶然发现这个问题的人的信息。现在似乎有一种内置方法可以通过在CreateMap()
配置链的末尾添加.ReverseMap()
调用来实现反向映射
CreateMap().ReverseMap()
成员
(属性、字段、GetMethod()),则无需调用CreateMap
。实际上,如果TDest
中的每个成员都存在于TSrc
中,则不需要调用CreateMap
。下面的代码可以工作
班级人员
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
班级人员2
{
公共字符串名称{get;set;}
公共整数{get;set;}
公共日期时间出生时间{get;set;}
}
公共类NormalProfile:Profile
{
公共档案()
{
//CreateMap()//
}
}
var cfg=新的MapperConfiguration(c=>
{
c、 AddProfile();
});
//cfg.AssertConfigurationsValid();
var mapper=cfg.CreateMapper();
var s3=mapper.Map(newperson2{Name=“Person2”});
我知道这里不是提问的地方。通常,我使用AutoMapper来启动带有DTO的实体对象,DTO是我在客户端应用程序中使用的唯一模型。我的问题是关于从数据库中读取数据,在这段时间里,我有一个实体模型集合,它应该启动DTO模型。我需要创建另一个反向映射吗?@saber是。我的意思是,除非有人证明相反,否则我就是这么做的。问题仍然存在,为什么我们必须调用CreateMap
?强迫我手动指定映射对于整个“自动”部分来说是不真实的…我认为这个扩展已经存在,如所见,.ReverseMap()
即,CreateMap().ReverseMap()
。正如我刚才在上所注意到的,我认为ReverseMap是在2012年2月之后添加的。也许,我刚过2011年11月,很明显它被包含了。ReverseMap()
不适用于。FormMember(dest=>dest.prop,opt=>optMapFrom(src=>src.prop))
使用CreateMap()。ReverseMap()
和所有链式修剪将为您节省一些按键次数--请参阅