AutoMapper с наследованием общего типа
-
22-07-2019 - |
Вопрос
Я пытаюсь сопоставить CustomerDTO с моей сущностью домена ICustomer с AutoMapper. Все отлично работает для первого уровня наследования, но не для остальных.
Я использую интерфейсы для моей доменной модели, поскольку конкретные типы внедряются StructureMap из моего слоя инфраструктуры базы данных 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;
}
У меня Отсутствует ключевое слово, исключение ключа для " Id " собственность ...
Решение
Понял!
Проблема связана с отсутствующим параметром " Id " собственность IBaseEntity.
После изменения все работает
public interface IBaseEntity<TPk>
{
TPk Id { get; set; }
}
Не связан с StackOverflow