giriş görünümü modeli:Otomatik Yanıtlayıcı eşlemesinde bir kaynak özelliğinin orijinal değeri nasıl saklanır?
public class FacilityInputModel
{
public int Id { get; set; }
public string Name { get; set; }
}
alanı modeli:
public class FacilityInputModel
{
public int Id { get; set; }
public string Name { get; set; }
public string OriginalName { get; set; }
}
Ben kullanıcıların bir tesisin adını değiştirmek ama hala orijinal adını tutmak için izin vermek. oluştururken
Say tesis (Sadece kolaylık json yazıyorum)
{id:1, name='Facility1', originalName='Facility1'}
olduğunu.
Adını bir FacilityInputModel
göndererek değiştireceğim. C# kodunda
{id:1, name='Facility2'}
varlık güncellemek için:
var entity = _repository.Find(id);
_repository.Detach(entity);
entity = Mapper.Map<Facility>(model);
_repository.Update(entity);
_repository.Save();
entity
ben haritalama sonrasında, işletme
{id:1, name='Facility2', originalName=null}
olduğunu
Mapper.Map
{id:1, name='Facility1', originalName='Facility1'}
Ama önce almakyerine benim haritalama olarak
{id:1, name='Facility2', originalName='Facility1'}
, ben
OriginalName
CreateMap<Facility, FacilityInputModel>()
.ReverseMap()
.ForMember(x => x.OriginalName, opt => opt.Ignore());
Ignore
çalıştı Ama hiç çalışmamış. Ayrıca, yine de çalışmaz.
Buradaki soru, var olan değerlerin haritalamada silinmekten nasıl kurtulmasıdır.
{id:1, name='Facility2', originalName='Facility1'}
Evet! bazı ek: tam 'Mapper.Map (kaynak, dest)' için gerek yok. AutoMapper, Mapper.Map (source, dest) 'işlemek için yeterince akıllıdır. –
Blaise
Aslında bu C#, smart parametrelerden jenerik türler bulmak için akıllıca;) –
Bu çok güzel. Farklı sınıflardan mülkleri bir görünüm modeline eşlemek istiyorum. Sadece onları çağırın - viewmodel nesnesini her seferinde dest olarak geçirin. – markau