Вы должны использовать .Select (), чтобы создать новый MessageTemplateDto и установить каждое свойство, которое хотите заполнить:
return context.MessageTemplates
.Where(m => m.NotifyEvent == notifyEvent && m.SendVia == notifyVia.ToString())
.Select(r => new MessageTemplateDto() {
TemplateID = r.WhateverTheColumnNameForIdIsInYourMapping,
r.NotifyEvent //both column and dto property have same name so this can be simplified
r.SendVia //again, both dto and column seem to have the same name so this can simply be this
Template = r.WhateverYourColumnNameForTemplateIsInTheContext
}
.ToList();
Etc
Внутри выбора r представляет строку таблицыв зависимости от контекста, имена столбцов в r будут такими, какие вы установили в своем отображении. Вы не показывали mappin, поэтому я не могу сказать, каковы некоторые из имен ваших столбцов
Это не единственный способ бросить, вы можете сделать что-то вроде предоставления конструктора в Dto, который принимаетобъект типа, который представляет сущность, а затем задает свойства в конструкторе. Обычно это делается не так часто, поскольку связывает набор объектов Dto с зависимостью от домена сущности, и они, вероятно, должны быть отдельными. Вы можете создать метод Map в своем классе репозитория, который выполняет этот запрос;map принимает сущность db и возвращает dto;это зависит от того, сколько раз вы будете делать это - если это единственное место, где вы когда-либо будете запрашивать эту таблицу и создавать список шаблонов, то нет смысла создавать для нее метод отображения.
В конечном итоге исходная проблема заключалась в том, что ваш исходный запрос возвращал список объектов-сущностей БД, и их нельзя напрямую назначить списку, объявленному как имеющему только список объектов dto, поскольку они являются разными объектами. Как назначение списка объектов типа автомобиля в список - вместо этого вы должны использовать Select, чтобы сгенерировать Dto из объекта данных. Dto, как правило, разные, более легкие, с меньшим количеством свойств, возможно, некоторые вычисленные свойства, которых нет в БД (например, у dto есть Возраст, в БД есть битный день) и которые используются для перемещения небольшого количества данных в другое место, возможно, дажепо сети, поэтому они меньше