У меня есть эти классы:
public class Tournament
{
public int Id { get; set; }
public List<Prize> Prizes { get; set; }
...
}
public class Prize
{
public int Id { get; set; }
public int RankPosition { get; set; }
public Stuff PrizeStuff { get; set; }
}
public class Stuff
{
public int Id { get; set; }
public string Description{ get; set; }
public string StuffImagine { get; set; }
}
У турнирного класса может быть несколько призов в виде списка;один приз связан с Турниром, а RankPosition является победителем (установлено в 1), второй и третий.STUFF - это таблица сервера sql, в которой регистрируются все элементы, которые "RankedPosition" выигрывает в турнире.
Моя задача - заполнить объект STUFF, предоставив только идентификатор клиента.
json из клиента выглядит следующим образом:
{
"Name":"Test",
"Rule": "this is a rule",
"OtherProperty": "Just another property",
"PrizePool":
[
{
"RankPosition": "0",
"Prize":
{
"ID": 1
}
},
{
"RankPosition": "1",
"Prize":
{
"ID": 2
}
},
{
"RankPosition": "2",
"Prize":
{
"ID": 3
}
}
]
}
В этом случае я хочу установить свои объекты класса STUFF, используя вышеуказанный клиентский JSON, и сохранить объекты STUFF в дБ.
Как я могу вызватьМетод CreateMap из класса SOURCETOURNAMENT в TORUNAMENT таким образом, что список PRIZES может отображать внутренний объект STUFF из db?
Исходный и целевой объект PRIZES идентичны.
ОБНОВЛЕНИЕ: Я пытался использовать Automapper.Коллекция как предложено, но я не могу понять, как это сделать.Это реальный код:
// SOURCE
public class TournamentParameters
{
public string Name { get; set; }
public List<PremioGiocatore> Montepremi { get; set; }
... Other props
}
// DESTINATION
public class DataTournamentParameters
{
public string Name { get; set; }
public List<PremioGiocatore> Montepremi { get; set; }
... Other props
}
// Prize for the first & second in the tournament
public class PremioGiocatore
{
public int Id { get; set; }
public PosizioneClassifica PosizioneClassifica { get; set; }
public Premio Premio { get; set; }
}
// Registry of Prizes
public class Premio
{
public int Id { get; set; }
public string Descrizione { get; set; }
}
При запуске Api у меня есть конфигурация mapper:
Mapper.Initialize((cfg) =>
{
cfg.AddCollectionMappers();
cfg.SetGeneratePropertyMaps<GenerateEntityFrameworkPrimaryKeyPropertyMaps<Contesto>>();
});
Я пытаюсь сопоставить исходный объект с целевым:
public int Create(TournamentParameters info)
{
DataTournamentParameters dataInfo = _mapper.Map<TournamentParameters, DataTournamentParameters>(info);
...
}
Так как этот Источник и Место назначения в основном равны, я не знаю, как создать карту, чтобы позволить заполнить мой Список назначения, начиная с источника, который имеет только идентификатор, как объяснено выше.