현재 동일한 클래스 간의 자동 설정을 고심하고 있습니다. 것은 SaveOrUpdate()
을 호출하기 전에 NHibernate를 사용하여 db로부터 엔티티를 가져와야합니다. 그런 다음 Id
및 LocationId
을 제외한 모든 속성을 바꿉니다.Automapper UseDestinationValue가 작동하지 않습니다.
매퍼 : 매퍼
using (ITransaction t = NHibernateSession.Current.BeginTransaction())
{
var m = meetingRoomRepository.FindAll(new MeetingRoomByEmailSpecification(meetingRoom.Email)).FirstOrDefault();
m = meetingRoomMapper.MapFrom(meetingRoom);
meetingRoomRepository.SaveOrUpdate(m);
t.Commit();
}
의
public Domain.DomainObjects.Entities.MeetingRoom MapFrom(Domain.DomainObjects.Entities.MeetingRoom input)
{
if (!initialized)
{
lock (Sync)
{
if (!initialized)
{
Mapper.CreateMap<Domain.DomainObjects.Entities.MeetingRoom, Domain.DomainObjects.Entities.MeetingRoom>()
.ForMember(x => x.Id, opt => opt.UseDestinationValue())
.ForMember(x => x.LocationId, opt => opt.UseDestinationValue());
initialized = true;
}
}
}
if (input == null)
{
throw new NullReferenceException("MeetingRoom is not set!");
}
var result = (Domain.DomainObjects.Entities.MeetingRoom)Mapper.Map(input, input.GetType(), typeof(Domain.DomainObjects.Entities.MeetingRoom));
return result;
}
사용 내가 코드를 디버깅하고 때 나는 m
이 locationId
및 Id
가 채워진 것을 볼 수 있지만 매퍼의 존재 덮어 쓰기 후 meetingRoom
의 locationId
및 Id
(기본값은 0입니다.).
왜 그냥 무시하지 않습니까? CreateMap() .ForMember (x => x.Blarg, opt => opt.Ignore()); –
불행히도, 무시 도움이 – pandemic