У меня есть модель Template
с List<Symbol> symbols
и эквивалентная ViewModel TemplateJS
с List<SymbolJS>
. Когда я запрашиваю Template
, ProjectTo<TemplateJS>
, кажется, выдает исключение, и я не уверен почему.
Исключение: " Типы аргументов не совпадают "
Я также хотел бы Include
Symbol
в своем запросе, но я не совсем уверен, как отобразить этот объект, а также. Должно ли это быть сделано в отдельном запросе?
Любая помощь приветствуется! Спасибо!
Модели:
public class Template
{
public int Id { get; set; }
public string Name { get; set; }
public List<Exercise> Exercises { get; set; }
public List<Symbol> Symbols { get; set; }
}
public class Symbol
{
public int Id { get; set; }
public int TemplateId { get; set; }
public Template Template { get; set; }
public char Letter { get; set; }
public string ImgSource { get; set; }
}
public class TemplateJS
{
public int Id { get; set; }
public string Name { get; set; }
public List<SymbolJS> Symbols { get; set; }
}
public class SymbolJS
{
public char Letter { get; set; }
public string ImgSrc { get; set; }
}
AutoMapper:
CreateMap<Template, TemplateJS>()
.ReverseMap();
CreateMap<Symbol, SymbolJS>()
.ReverseMap();
Запрос:
public async Task<TemplateJS> GetTemplateAsync(int Id)
{
try
{
var q = await _dbContext.Template
// .Include(x => x.Symbols)
.Where(x => x.Id == Id)
.ProjectTo<TemplateJS>(_mapper.ConfigurationProvider)
.SingleOrDefaultAsync();
return q;
}
catch (Exception e)
{
throw e;
}
}