Я следую за этот ответ AutoMapper mapping int[] or List<int> from ViewModel to a List<Type> in Domain Model и получил его связывание с моим CategoryId
к SelectedCategoryIds
на UploadSongViewModel
, но я также хочу получить его, чтобы связать SongId
с Id
на UploadSongViewModel
.AutoMapper Mapping навигация вопрос о собственности
namespace App
{
public static class AutoMapper
{
public static MapperConfiguration Config;
public static void Initialize()
{
//It works with CategoryId, but throws an error when I include SondId.
Config = new MapperConfiguration(x =>
{
x.CreateMap<int, SongCategory>()
.IgnoreAllNonExisting()
.ForMember(dest => dest.CategoryId, opt => opt.MapFrom(src => src))
.ForMember(dest => dest.SongId, opt => opt.MapFrom(src => src)); //Code that's throwing exception
x.CreateMap<UploadSongViewModel, Song>()
.IgnoreAllNonExisting()
.ForMember(dest => dest.AudioName, opt => opt.MapFrom(src => src.SongName))
.ForMember(dest => dest.AudioPath, opt => opt.MapFrom(src => src.SongPath))
.ForMember(dest => dest.SongCategories, opt => opt.MapFrom(src => src.SelectedCategoryIds))
.ForMember(dest => dest.SongCategories, opt => opt.MapFrom(src => src.Id)); //Code that's throwing exception
});
//Throws exception here because it can't bind SongId property
Config.AssertConfigurationIsValid();
}
}
}
public abstract class Entity
{
public int Id { get; set; }
}
public class SongCategory : Entity
{
public int SongId { get; set; }
public int CategoryId { get; set; }
}
public class Song : Audio
{
public string AlbumName { get; set; }
public string ArtistName { get; set; }
public List<SongCategory> SongCategories { get; set;}
}
public class UploadSongViewModel
{
public int Id { get; set; }
public string ArtistName { get; set; }
public string AlbumName { get; set; }
public int[] SelectedCategoryIds { get; set; }
public MultiSelectList CategoriesSelectList { get; set; }
}
Я не очень понимаю, что авто код картографа делает из Дарин Димитров ответа, так что трудно отлаживать. Если кто-то может объяснить, как это отображение работает для categoryId и почему он не работает для SongId, это было бы здорово.
Исключение я получаю:
Следующее свойство на System.Collections.Generic.List
1[[SoundVast.Models.SongCategory, SoundVast, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] cannot be mapped: SongCategories Add a custom mapping expression, ignore, add a custom resolver, or modify the destination type System.Collections.Generic.List
1 [[SoundVast.Models.SongCategory, SoundVast, Version = 1.0.0.0, культура = нейтральной, Public- = NULL]]. Контекст: Сопоставление с собственностью SongCategories из System.Int32 в System.Collections.Generic.List`1 [[SoundVast.Models.SongCategory, SoundVast, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null]] Сопоставление с type SoundVast.Areas.Upload.Models.UploadSongViewModel to SoundVast.Models.Song Исключение типа 'AutoMapper.AutoMapperConfigurationException' было выбрано.