AutoMapper mit generischem Typ Vererbung
-
22-07-2019 - |
Frage
Ich versuche CustomerDTO mit meiner Domain Einheit ICustomer mit AutoMapper abzubilden. Alles funktioniert für erste Vererbungsstufe in Ordnung, aber nicht für die anderen.
Ich bin Schnittstellen für meine Domain-Modell, da konkrete Typen von StructureMap von meiner LinqToSql Database Infrastructure Schicht injiziert werden.
public interface IBaseEntity<TPk>
{
TPk Id { get; }
}
public interface ICustomer : IBaseEntity<int>
{
string Email { get; set; }
}
[DataContract]
public class CustomerDTO
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Email { get; set; }
}
Nun ist die AutoMapper Mapping
Mapper.CreateMap<CustomerDTO, ICustomer>();
Mapper.CreateMap<ICustomer, CustomerDTO>();
Mapper.AssertConfigurationIsValid();
Jetzt, wo ich bin mit dem Mapping
public CreateCustomerServiceResult CreateCustomer(CustomerDTO customer)
{
var result = new CreateCustomerServiceResult();
try
{
var originalMapped = Mapper.DynamicMap<CustomerDTO, ICustomer>(customer);
var newCustomer = _customerService.CreateCustomer(originalMapped);
var newMapped = Mapper.DynamicMap<ICustomer, CustomerDTO>(newCustomer);
result.Customer = newMapped;
}
catch (Exception ex)
{
}
return result;
}
Ich habe einen Dictionnary fehlt Key Exception auf der "Id" Eigenschaft ...
Lösung
Got It!
Das Problem der fehlenden Setter von "Id" Eigentum von IBaseEntity zurückzuführen ist.
Nachdem es alles funktioniert Ändern
public interface IBaseEntity<TPk>
{
TPk Id { get; set; }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow