Nachdem sie AutoMapper (previous question) zu arbeiten, ich bin mit einem anderen Problem zu kämpfen (nahm es auf eine andere Frage, so dass der erste wäre nicht zu kompliziert sein) ...AutoMapper verschmelzenden Objekte Ausgabe
Ich habe die nächsten Klassen:
public class Model1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDay { get; set; }
public int Gender { get; set; }
public string NickName { get; set; }
}
public class Model2
{
public bool Married { get; set; }
public int Children { get; set; }
public bool HasPet { get; set; }
}
public class Entity1
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDay { get; set; }
public int Gender { get; set; }
}
public class Entity2
{
public bool Married { get; set; }
public int Children { get; set; }
public bool HasPet { get; set; }
public string NickName { get; set; }
}
Diese Objekte sind schematisch ähnlich zu meinen ursprünglichen Objekten, außer den Namen und die Komplexität.
Und AutoMapper Konfigurationsklasse (genannt von Global.asax):
public class AutoMapperConfig
{
public static MapperConfiguration MapperConfiguration { get; set; }
public static void Configure()
{
MapperConfiguration = new MapperConfiguration(cfg => {
cfg.AddProfile<Out>();
cfg.CreateMap<SuperModel, SuperEntity>();
});
MapperConfiguration.AssertConfigurationIsValid();
}
}
public class Out: Profile
{
protected override void Configure()
{
CreateMap<Model1, Entity1>();
CreateMap<Model2, Entity2>()
.ForMember(dest => dest.NickName, opt => opt.Ignore());
CreateMap<Model1, Entity2>()
.ForMember(dest => dest.Married, opt => opt.Ignore())
.ForMember(dest => dest.Children, opt => opt.Ignore())
.ForMember(dest => dest.HasPet, opt => opt.Ignore());
CreateMap<SuperModel, SuperEntity>()
.ForMember(dest => dest.Entity1, opt => opt.MapFrom(src => src.Model1))
.ForMember(dest => dest.Entity2, opt => opt.MapFrom(src => src.Model2));
}
}
Wenn ich das Objekt müssen umgewandelt werden, ich als nächstes tun (ich an dieser Stelle _superModel
initialisiert und mit Daten gefüllt):
SuperEntity _superEntity = new SuperEntity();
AutoMapperConfig.MapperConfiguration.CreateMapper().Map<SuperModel, SuperEntity>(_superModel, _superEntity);
Also, ich Karte Model1
zu Entity1
(Hexe ist in Ordnung), und auch Model2
zu Entity2
(Hexe ist auch in Ordnung, mit Ausnahme der Id-Eigenschaft, die ignoriert wird) .
Die Hauptobjekte SuperModel
und SuperEntity
sind ebenfalls zugeordnet und scheinen gut zu funktionieren.
Das Problem passiert, wenn ich Model1
zu Entity2
zuordnen, um die NickName
(dachte der Rest der Eigenschaften werden ignoriert). Einige wie es immer ist null
!
Irgendwelche Ideen?
Wie werden Sie die Karten tun? –
@ ArturoMenchaca Sie haben Recht, ich habe vergessen, es zu erwähnen. Bitte sehen Sie sich die Frage erneut an - Sie haben sie gerade bearbeitet. – neoselcev