AutoMapper Com genérico tipo de herança
-
22-07-2019 - |
Pergunta
Eu estou tentando mapear CustomerDTO com meu domínio ICustomer entidade com AutoMapper. Tudo funciona bem para o nível de primeira herança, mas não para os outros.
Eu estou usando Interfaces para o meu modelo de domínio desde tipos de concreto são injetados por StructureMap do meu LinqToSql camada de Infra-estrutura de banco de dados.
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; }
}
Agora, o mapeamento AutoMapper
Mapper.CreateMap<CustomerDTO, ICustomer>();
Mapper.CreateMap<ICustomer, CustomerDTO>();
Mapper.AssertConfigurationIsValid();
Agora, onde eu estou usando o mapeamento
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;
}
Eu tenho um Dictionnary faltando Exceção Key na propriedade "Id" ...
Solução
Got It!
O problema foi devido ao setter falta de "Id" de propriedade de IBaseEntity.
Depois de mudar isso tudo funciona
public interface IBaseEntity<TPk>
{
TPk Id { get; set; }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow