문제

나는 내 도메인 엔티티 ICUSTOMER와 함께 automapper와 함께 CustomerDTO를 매핑하려고합니다. 모든 것이 첫 번째 상속 레벨에는 잘 작동하지만 다른 상속 레벨에는 잘 작동합니다.

콘크리트 유형이 LinqToSQL 데이터베이스 인프라 계층의 구조 캡에 의해 주입되므로 도메인 모델에 인터페이스를 사용하고 있습니다.

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; }
}

이제 Automapper 매핑

Mapper.CreateMap<CustomerDTO, ICustomer>();

Mapper.CreateMap<ICustomer, CustomerDTO>();

Mapper.AssertConfigurationIsValid();

이제 매핑을 사용하는 곳입니다

    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;
    }

나는 가지고있다 DictionNary 누락 된 주요 예외 "ID"속성에서 ...

도움이 되었습니까?

해결책

알았어요!

문제는 ibaseentity의 "ID"속성의 누락 된 세터 때문이었습니다.

변경 한 후 모든 것이 작동합니다

public interface IBaseEntity<TPk>
{
    TPk Id { get; set; }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top