문제
나는 내 도메인 엔티티 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; }
}
제휴하지 않습니다 StackOverflow