我是Automapper的新手,在更新映射字段时遇到困难。我必须同意,互联网上对此问题有数以百万计的答案,但是这个问题对我的情况没有帮助。
问题: 我正在尝试仅更新映射的字段。但是当我这样做时,我的完整目标属性就会更新。
例如,
我的目标对象(数据库表)拥有5个属性,所有5个属性 属性接受null。但是我只有3个属性 源(模型文件)。我正在将所有三个源字段与 目标字段,但我没有映射其余两个字段 目标属性。您会猜对的,是的,当 我对此进行了更新,两个未映射的字段也正在更新为null(默认值-DB)。但它 应该不是这种情况,而是应该具有现有值。
请在下面查看我的代码
参考: Automapper版本:v6.2.2和运行时版本:v4.0.3
Repository.cs,
var objectToUpdate = Mapper.Map<TDomain>(entity); //TDestination Map<TDestination>(object source);
DatabaseContext.Entry(objectToUpdate).State = EntityState.Modified;
InvoiceLineMapping.cs
public static void Map(IProfileExpression profile)
{
profile.CreateMap<Registration, PT_Registration>()
.ForMember(d => d.Name_VC, map => map.MapFrom(s => s.Name))
.ForMember(d => d.UserName_VC, map => map.MapFrom(s => s.Username))
.ForMember(d => d.Mobile_VC, map => map.MapFrom(s => s.Mobile));
}
注意:如前所述,目标中有两个未映射的字段,分别为EMail_VC和Comments_VC,其值分别为sample@test.com和testComments。更新发生时,这两个字段将为空(默认值)
我尝试过,
所以有人可以调查一下并为我提供更好的解决方案。我知道解决方案会更简单,但是由于我不了解,它会花费越来越多的时间。
感谢您的宝贵时间。任何帮助都会大有帮助。