Я использую TinyMapper для отображения из класса Log
в LogViewModel
.
public class Log
{
//.... bunch of properties here
public int LevelId {get; set;}
}
public class LogViewModel
{
//.... bunch of properties here
public LogLevelViewModel Level {get; set;}
}
public class LogLevelViewModel
{
public int Id {get; set;}
public string Name {get; set;}
}
Для Level
есть перечисление, но мы используем модель представления LogLevelViewModel
, чтобы содержать Id
и Name
, соответствующие значению и имени перечисления. В базе данных Log
имеет поле LevelId
, которое является значением перечисления.
Проблема в том, что я пытаюсь использовать TinyMapper для отображения с Log
на LogViewModel
. Если я использую привязку по умолчанию
TinyMapper.Bind<Log, LogViewModel>();
и в контроллере:
var data = TinyMapper.Map<List<LogViewModel>>(logs);
значения заполняются просто отлично, за исключением Level
, оно равно нулю, хотя Log.LevelId
нет. Когда я пытаюсь сопоставить LevelId
с Level.Id
, это также все равно просто дает ноль для Level
.
TinyMapper.Bind<Log, LogViewModel>(config =>
{
config.Bind(src => src.LevelId, dest => dest.Level.Id);
});
В идеале мне нужно связать с int LevelId
и напрямую заполнить значения Level.Id
и Level.Name
, но если бы я мог хотя бы просто получить значение Level.Id
, которое было бы адекватным. Кто-нибудь знает, как этого добиться?
Примечание: я попробовал несколько других вариантов привязок, но все, что я получил бы, это ошибка "System.ArgumentException: 'Expression is not a MemberExpression'"
.