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" ...

Foi útil?

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
scroll top