Я пытаюсь выяснить, как использовать Automapper, когда у моей сущности есть поле типа сущности.
У меня есть 3 класса, как эти:
public abstract class Entity<IdK>
{
public virtual IdK Code { get; protected set; }
}
public class Contact : Entity
{
public virtual string Name { get; set; }
public virtual Company Company { get; set; }
}
public class Company : Entity
{
public virtual string Name { get; set; }
}
Мой класс Contact содержит элемент типа Company.
Я также создал ViewModel, чтобы передать некоторую информацию на мой взгляд:
public ContactViewModel()
{
public Guid Code { get; set; }
public int Version { get; set; }
[DisplayName("Contact")]
public string Name { get; set; }
[DisplayName("Company")]
public string Company { get; set; }
}
В моей модели представления я определил поле Company типа string. Это будет содержать значение, которое пользователь выберет из выпадающего списка (список компаний).
Я определил загрузчик при запуске моего приложения:
public class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(x => {
x.CreateMap<Domain.Contact, ViewModels.ContactViewModel>();
x.CreateMap<ViewModels.ContactViewModel, Domain.Contact>()
});
}
}
Когда я пытаюсь переназначить свою ViewModel на мою сущность, я получаю ошибку преобразования (AutoMapper.AutoMapperMappingException).
Automapper не может понять, как преобразовать мою компанию (строку) в объект типа Company, входящий в контакт.
Можно ли определить правило, чтобы Automapper знал, как преобразовать строку (компанию) в код объекта моей компании, члена Contact?