首先,有几个类似的问题,我试过到处查看它们,但没有一个起作用。
我有这个映射代码
var updateEntities = await _dbContext.AnswerAnchors.Where(x => x.SurveyResultId == surveyResultId).ToListAsync();
updateEntities = _mapper.Map<IEnumerable<AnswerAnchorsDomainModel>, List<AnswerAnchors>>(anchors, updateEntities);
_dbContext.UpdateRange(updateEntities);
这是我的目标对象结构。
public class AnswerAnchors : BaseEntity<long>
{
public long SurveyResultId { get; set; }
public DateTimeOffset AnchorDate { get; set; }
public string AnchorDescription { get; set; }
}
public class BaseEntity<T> : IBaseEntity
where T : struct
{
[Key]
public T Id { get; set; }
}
正在发生的事情是在任何情况下都需要映射现有的Id
需求,而不是被目标覆盖,因为实体框架需要更新实体。但是,无论何时发生映射,该Id
属性都会被覆盖为零 (0)。我尝试使用opt.Ignore()
,opt.UseDestinationValue()
但没有一个保留Id
目标值。
这是个人资料 -
CreateMap<AnswerAnchorsDomainModel, AnswerAnchors>()
.ForMember(anchor => anchor.Id, opt => opt.UseDestinationValue())
.AfterMap((src, dest) =>
{
dest.CreatedBy = "";
dest.LastUpdateBy = "";
dest.CreateOn = DateTimeOffset.Now;
dest.UpdateOn = DateTimeOffset.Now;
});