![](/img/trans.png)
[英]Keep property of source object to destination property when mapping objects using AutoMapper Map function
[英]How to keep original value of a source property in Automapper mapping?
输入视图模型:
public class FacilityInputModel
{
public int Id { get; set; }
public string Name { get; set; }
}
域名模型:
public class FacilityInputModel
{
public int Id { get; set; }
public string Name { get; set; }
public string OriginalName { get; set; }
}
我允许用户更改设施的名称,但仍保留其原始名称。
说设施是(为了方便,我正在写json)
{id:1, name='Facility1', originalName='Facility1'}
什么时候创建
我将通过发布FacilityInputModel
来更改名称。
{id:1, name='Facility2'}
在C#代码中更新实体:
var entity = _repository.Find(id);
_repository.Detach(entity);
entity = Mapper.Map<Facility>(model);
_repository.Update(entity);
_repository.Save();
我在Mapper.Map
之前得到的entity
{id:1, name='Facility1', originalName='Facility1'}
但是在映射之后,实体就是
{id:1, name='Facility2', originalName=null}
代替
{id:1, name='Facility2', originalName='Facility1'}
在我的映射中,我试图Ignore
OriginalName
CreateMap<Facility, FacilityInputModel>()
.ReverseMap()
.ForMember(x => x.OriginalName, opt => opt.Ignore());
但它从来没有奏效。 也试过了
.ForMember(x => x.NameInWebAdmin, opt => opt.DoNotUseDestinationValue());
仍然行不通。
所以问题是如何避免在映射中擦除现有值。 并获得一个后映射实体:
{id:1, name='Facility2', originalName='Facility1'}
当你调用entity = Mapper.Map<Facility>(model);
时,你会得到一个全新的对象entity = Mapper.Map<Facility>(model);
。 尝试使用Mapper.Map<Source, Destination>(source, destination)
映射到现有映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.