Cześć,
Zastanawiam się czy nie da się tego zrobić prościej i czy rzeczywiście mapowanie z/do viewmodeli musi wyglądać tak:
//Mapping company entity to company details view model
CreateMap<Company, CompanyDetailsViewModel>()
.ForMember(dto => dto.Id, opt => opt.MapFrom(src => src.Id))
.ForMember(dto => dto.Name, opt => opt.MapFrom(src => src.Name))
.ForMember(dto => dto.City, opt => opt.MapFrom(src => src.Address.City))
.ForMember(dto => dto.Voivodeship, opt => opt.MapFrom(src => src.Address.City.Voivodeship))
.ForMember(dto => dto.PostalCode, opt => opt.MapFrom(src => src.Address.PostalCode))
.ForMember(dto => dto.Street, opt => opt.MapFrom(src => src.Address.Street))
.ForMember(dto => dto.ApartmentNumber, opt => opt.MapFrom(src => src.Address.ApartmentNumber))
.ForMember(dto => dto.StreetNumber, opt => opt.MapFrom(src => src.Address.StreetNumber))
.ForMember(dto => dto.Workplaces, opt => opt.MapFrom(src => src.Workplaces));
//Mapping company details view model to company entity
CreateMap<CompanyDetailsViewModel, Company>()
.ForMember(dto => dto.Id, opt => opt.MapFrom(src => src.Id))
.ForMember(dto => dto.Name, opt => opt.MapFrom(src => src.Name))
.ForPath(dto => dto.Address.PostalCode, opt => opt.MapFrom(src => src.PostalCode))
.ForPath(dto => dto.Address.City, opt => opt.MapFrom(src => src.City))
.ForPath(dto => dto.Address.Street, opt => opt.MapFrom(src => src.Street))
.ForPath(dto => dto.Address.StreetNumber, opt => opt.MapFrom(src => src.StreetNumber))
.ForPath(dto => dto.Address.ApartmentNumber, opt => opt.MapFrom(src => src.ApartmentNumber))
.ForPath(dto => dto.Address.City.Voivodeship, opt => opt.MapFrom(src => src.Voivodeship))
.ForMember(dto => dto.Workplaces, opt => opt.MapFrom(src => src.Workplaces));
- Czy jeśli stworzę kolejny model np. CompanySimplyViewModel, to będę musiał z/do niego mapować w podobny sposób, właściwość po właściwości?
- Mój obiekt Company entity ma w bazie danych podane tylko Name oraz Id na starcie, ma też klucz obcy do tabeli Address. W momencie "aktualizacji" danych firmy, gdy użytkownik wprowadzi jakąś włąsciwość, która jest mapowana do tabeli Address, to czyEF Core będzie wiedział, że jeśli klucz obcy w tabeli Companies dla adresu jest pusty, to ma go utworzyć, a jeśli już jest to go tylko zaktualizować? czy to wszystko muszę mu wskazać w klasie repozytorium?
IEnumerable<int> AuthorsIds
skoro maszIEnumerable<DropdownModel> Authors